diff --git a/.gitmodules b/.gitmodules index cc5c822934..f4aff6efa3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,8 @@ path = apps/browser/jslib url = https://github.com/bitwarden/jslib.git branch = master + +[submodule "apps/desktop/jslib"] + path = apps/desktop/jslib + url = https://github.com/bitwarden/jslib.git + branch = master diff --git a/apps/desktop/.editorconfig b/apps/desktop/.editorconfig new file mode 100644 index 0000000000..f76666a284 --- /dev/null +++ b/apps/desktop/.editorconfig @@ -0,0 +1,15 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Set default charset +[*.{js,ts,scss,html}] +charset = utf-8 +indent_style = space +indent_size = 2 diff --git a/apps/desktop/.eslintignore b/apps/desktop/.eslintignore new file mode 100644 index 0000000000..4acf24f987 --- /dev/null +++ b/apps/desktop/.eslintignore @@ -0,0 +1,9 @@ +dist +build +jslib +webpack.main.js +webpack.renderer.js +src/scripts/duo.js +desktop_native + +**/node_modules diff --git a/apps/desktop/.eslintrc.json b/apps/desktop/.eslintrc.json new file mode 100644 index 0000000000..d1f98f491d --- /dev/null +++ b/apps/desktop/.eslintrc.json @@ -0,0 +1,32 @@ +{ + "root": true, + "env": { + "browser": true, + "node": true + }, + "extends": ["./jslib/shared/eslintrc.json"], + "rules": { + "import/order": [ + "error", + { + "alphabetize": { + "order": "asc" + }, + "newlines-between": "always", + "pathGroups": [ + { + "pattern": "jslib-*/**", + "group": "external", + "position": "after" + }, + { + "pattern": "src/**/*", + "group": "parent", + "position": "before" + } + ], + "pathGroupsExcludedImportTypes": ["builtin"] + } + ] + } +} diff --git a/apps/desktop/.git-blame-ignore-revs b/apps/desktop/.git-blame-ignore-revs new file mode 100644 index 0000000000..62636755fa --- /dev/null +++ b/apps/desktop/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Apply Prettier https://github.com/bitwarden/desktop/pull/1202 +521feae535d83166e620c3c28dfc3e7b0314a00e diff --git a/apps/desktop/.gitattributes b/apps/desktop/.gitattributes new file mode 100644 index 0000000000..6313b56c57 --- /dev/null +++ b/apps/desktop/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/apps/desktop/.github/ISSUE_TEMPLATE/bug.yml b/apps/desktop/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000000..6754d6d6e5 --- /dev/null +++ b/apps/desktop/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,85 @@ +name: Bug Report +description: File a bug report +labels: [bug] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + + Please do not submit feature requests. The [Community Forums](https://community.bitwarden.com) has a section for submitting, voting for, and discussing product feature requests. + - type: textarea + id: reproduce + attributes: + label: Steps To Reproduce + description: How can we reproduce the behavior. + value: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. Click on '...' + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Result + description: A clear and concise description of what you expected to happen. + validations: + required: true + - type: textarea + id: actual + attributes: + label: Actual Result + description: A clear and concise description of what is happening. + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots or Videos + description: If applicable, add screenshots and/or a short video to help explain your problem. + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: Add any other context about the problem here. + - type: dropdown + id: os + attributes: + label: Operating System + description: What operating system are you seeing the problem on? + multiple: true + options: + - Windows + - macOS + - Linux + validations: + required: true + - type: input + id: os-version + attributes: + label: Operating System Version + description: What version of the operating system(s) are you seeing the problem on? + - type: dropdown + id: install-method + attributes: + label: Installation method + multiple: true + options: + - Direct Download (from bitwarden.com) + - Mac App Store + - Microsoft Store + - Homebrew + - Chocolatey + - Snap + - Other + validations: + required: true + - type: input + id: version + attributes: + label: Build Version + description: What version of our software are you running? (go to "Help" → "About Bitwarden" in the app) + validations: + required: true diff --git a/apps/desktop/.github/ISSUE_TEMPLATE/config.yml b/apps/desktop/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..61d7e2b96f --- /dev/null +++ b/apps/desktop/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false +contact_links: + - name: Feature Requests + url: https://community.bitwarden.com/c/feature-requests/ + about: Request new features using the Community Forums. Please search existing feature requests before making a new one. + - name: Bitwarden Community Forums + url: https://community.bitwarden.com + about: Please visit the community forums for general community discussion, support and the development roadmap. + - name: Customer Support + url: https://bitwarden.com/contact/ + about: Please contact our customer support for account issues and general customer support. + - name: Security Issues + url: https://hackerone.com/bitwarden + about: We use HackerOne to manage security disclosures. diff --git a/apps/desktop/.github/PULL_REQUEST_TEMPLATE.md b/apps/desktop/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..a4441bfaff --- /dev/null +++ b/apps/desktop/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,32 @@ +## Type of change + +- [ ] Bug fix +- [ ] New feature development +- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc) +- [ ] Build/deploy pipeline (DevOps) +- [ ] Other + +## Objective + + + +## Code changes + + + + +- **file.ext:** Description of what was changed and why + +## Screenshots + + + +## Testing requirements + + + +## Before you submit + +- [ ] I have checked for **linting** errors (`npm run lint`) (required) +- [ ] This change requires a **documentation update** (notify the documentation team) +- [ ] This change has particular **deployment requirements** (notify the DevOps team) diff --git a/apps/desktop/.github/secrets/appstore-app-cert.p12.gpg b/apps/desktop/.github/secrets/appstore-app-cert.p12.gpg new file mode 100644 index 0000000000..ef81792f3d Binary files /dev/null and b/apps/desktop/.github/secrets/appstore-app-cert.p12.gpg differ diff --git a/apps/desktop/.github/secrets/appstore-installer-cert.p12.gpg b/apps/desktop/.github/secrets/appstore-installer-cert.p12.gpg new file mode 100644 index 0000000000..09652a3a1b Binary files /dev/null and b/apps/desktop/.github/secrets/appstore-installer-cert.p12.gpg differ diff --git a/apps/desktop/.github/secrets/bitwarden-desktop-key.p12.gpg b/apps/desktop/.github/secrets/bitwarden-desktop-key.p12.gpg new file mode 100644 index 0000000000..84c7f00e2d Binary files /dev/null and b/apps/desktop/.github/secrets/bitwarden-desktop-key.p12.gpg differ diff --git a/apps/desktop/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg b/apps/desktop/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg new file mode 100644 index 0000000000..32e2f79f2c Binary files /dev/null and b/apps/desktop/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg differ diff --git a/apps/desktop/.github/secrets/devid-app-cert.p12.gpg b/apps/desktop/.github/secrets/devid-app-cert.p12.gpg new file mode 100644 index 0000000000..8e2e2146e2 Binary files /dev/null and b/apps/desktop/.github/secrets/devid-app-cert.p12.gpg differ diff --git a/apps/desktop/.github/secrets/devid-installer-cert.p12.gpg b/apps/desktop/.github/secrets/devid-installer-cert.p12.gpg new file mode 100644 index 0000000000..f379fc214f Binary files /dev/null and b/apps/desktop/.github/secrets/devid-installer-cert.p12.gpg differ diff --git a/apps/desktop/.github/secrets/macdev-cert.p12.gpg b/apps/desktop/.github/secrets/macdev-cert.p12.gpg new file mode 100644 index 0000000000..4b8e0ef474 Binary files /dev/null and b/apps/desktop/.github/secrets/macdev-cert.p12.gpg differ diff --git a/apps/desktop/.github/workflows/build.yml b/apps/desktop/.github/workflows/build.yml new file mode 100644 index 0000000000..a543fcdd2a --- /dev/null +++ b/apps/desktop/.github/workflows/build.yml @@ -0,0 +1,1275 @@ +--- +name: Build + +on: + push: + branches-ignore: + - 'l10n_master' + - 'gh-pages' + paths-ignore: + - '.github/workflows/**' + workflow_dispatch: + inputs: {} + +jobs: + cloc: + name: CLOC + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up cloc + run: | + sudo apt-get update + sudo apt-get -y install cloc + + - name: Print lines of code + run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git + + + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + package_version: ${{ steps.retrieve-version.outputs.package_version }} + build_number: ${{ steps.increment-version.outputs.build_number }} + safari_ref: ${{ steps.safari-ref.outputs.safari_ref }} + rc_branch_exists: ${{ steps.branch-check.outputs.rc_branch_exists }} + hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Get Package Version + id: retrieve-version + run: | + PKG_VERSION=$(jq -r .version src/package.json) + echo "::set-output name=package_version::$PKG_VERSION" + + - name: Increment Version + id: increment-version + run: | + BUILD_NUMBER=$(expr 500 + $GITHUB_RUN_NUMBER) + echo "Setting build number to $BUILD_NUMBER" + echo "::set-output name=build_number::$BUILD_NUMBER" + + - name: Get Safari Branch Ref + id: safari-ref + run: | + SAFARI_REF=master + + if [[ "$GITHUB_REF" == "refs/heads/hotfix-rc" ]]; then + SAFARI_REF=hotfix-rc + elif [[ "$GITHUB_REF" == "refs/heads/rc" ]]; then + SAFARI_REF=rc + fi + + echo "Setting Safari Extension ref to $SAFARI_REF" + echo "::set-output name=safari_ref::$SAFARI_REF" + + - name: Check if special branches exist + id: branch-check + run: | + if [[ $(git ls-remote --heads origin rc) ]]; then + echo "::set-output name=rc_branch_exists::1" + else + echo "::set-output name=rc_branch_exists::0" + fi + + if [[ $(git ls-remote --heads origin hotfix-rc) ]]; then + echo "::set-output name=hotfix_branch_exists::1" + else + echo "::set-output name=hotfix_branch_exists::0" + fi + + lint: + name: Lint + runs-on: ubuntu-20.04 + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Cache npm + id: npm-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: '~/.npm' + key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + + - name: Install Node dependencies + run: npm ci + + - name: Run linter + run: npm run lint + + + linux: + name: Linux Build + runs-on: ubuntu-20.04 + needs: setup + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Set Node options + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Set up environment + run: | + sudo apt-get update + sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev rpm + + - name: Set up Snap + run: sudo snap install snapcraft --classic + + - name: Print environment + run: | + node --version + npm --version + snap --version + snapcraft --version || echo 'snapcraft unavailable' + + - name: Install Node dependencies + run: npm ci + + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/*.node + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + + - name: Build application + run: npm run dist:lin + + - name: Upload .deb artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-amd64.deb + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-amd64.deb + if-no-files-found: error + + - name: Upload .rpm artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.rpm + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.rpm + if-no-files-found: error + + - name: Upload .freebsd artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.freebsd + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.freebsd + if-no-files-found: error + + - name: Upload .snap artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: bitwarden_${{ env._PACKAGE_VERSION }}_amd64.snap + path: ./dist/bitwarden_${{ env._PACKAGE_VERSION }}_amd64.snap + if-no-files-found: error + + - name: Upload .AppImage artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.AppImage + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.AppImage + if-no-files-found: error + + - name: Upload latest auto-update artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: latest-linux.yml + path: ./dist/latest-linux.yml + if-no-files-found: error + + + windows: + name: Windows Build + runs-on: windows-2019 + needs: setup + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Set Node options + run: echo "NODE_OPTIONS=--max_old_space_size=4096" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + shell: pwsh + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Install AST + uses: bitwarden/gh-actions/install-ast@f135c42c8596cb535c5bcb7523c0b2eef89709ac + + - name: Set up environment + shell: pwsh + run: choco install checksum --no-progress + + - name: Rust + shell: pwsh + run: | + rustup target install i686-pc-windows-msvc + rustup target install aarch64-pc-windows-msvc + + - name: Print environment + run: | + node --version + npm --version + choco --version + rustup show + + - name: Login to Azure + uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f + with: + keyvault: "bitwarden-prod-kv" + secrets: "code-signing-vault-url, + code-signing-client-id, + code-signing-tenant-id, + code-signing-client-secret, + code-signing-cert-name" + + - name: Install Node dependencies + run: npm ci + + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/*.node + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + + - name: Build & Sign (dev) + env: + ELECTRON_BUILDER_SIGN: 1 + SIGNING_VAULT_URL: ${{ steps.retrieve-secrets.outputs.code-signing-vault-url }} + SIGNING_CLIENT_ID: ${{ steps.retrieve-secrets.outputs.code-signing-client-id }} + SIGNING_TENANT_ID: ${{ steps.retrieve-secrets.outputs.code-signing-tenant-id }} + SIGNING_CLIENT_SECRET: ${{ steps.retrieve-secrets.outputs.code-signing-client-secret }} + SIGNING_CERT_NAME: ${{ steps.retrieve-secrets.outputs.code-signing-cert-name }} + run: | + npm run build + npm run pack:win + + - name: Rename appx files for store + shell: pwsh + run: | + Copy-Item "./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx" ` + -Destination "./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx" + Copy-Item "./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx" ` + -Destination "./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx" + Copy-Item "./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx" ` + -Destination "./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx" + + - name: Package for Chocolatey + shell: pwsh + run: | + Copy-Item -Path ./stores/chocolatey -Destination ./dist/chocolatey -Recurse + Copy-Item -Path ./dist/nsis-web/Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe ` + -Destination ./dist/chocolatey + + $checksum = checksum -t sha256 ./dist/chocolatey/Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe + $chocoInstall = "./dist/chocolatey/tools/chocolateyinstall.ps1" + (Get-Content $chocoInstall).replace('__version__', "$env:_PACKAGE_VERSION").replace('__checksum__', $checksum) | Set-Content $chocoInstall + choco pack ./dist/chocolatey/bitwarden.nuspec --version "$env:_PACKAGE_VERSION" --out ./dist/chocolatey + + - name: Upload portable exe artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-Portable-${{ env._PACKAGE_VERSION }}.exe + path: ./dist/Bitwarden-Portable-${{ env._PACKAGE_VERSION }}.exe + if-no-files-found: error + + - name: Upload installer exe artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe + path: ./dist/nsis-web/Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe + if-no-files-found: error + + - name: Upload appx ia32 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx + if-no-files-found: error + + - name: Upload store appx ia32 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx + if-no-files-found: error + + - name: Upload NSIS ia32 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.nsis.7z + path: ./dist/nsis-web/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.nsis.7z + if-no-files-found: error + + - name: Upload appx x64 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx + if-no-files-found: error + + - name: Upload store appx x64 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx + if-no-files-found: error + + - name: Upload NSIS x64 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.nsis.7z + path: ./dist/nsis-web/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.nsis.7z + if-no-files-found: error + + - name: Upload appx ARM64 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx + if-no-files-found: error + + - name: Upload store appx ARM64 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx + if-no-files-found: error + + - name: Upload NSIS ARM64 artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z + path: ./dist/nsis-web/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z + if-no-files-found: error + + - name: Upload nupkg artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: bitwarden.${{ env._PACKAGE_VERSION }}.nupkg + path: ./dist/chocolatey/bitwarden.${{ env._PACKAGE_VERSION }}.nupkg + if-no-files-found: error + + - name: Upload latest auto-update artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: latest.yml + path: ./dist/nsis-web/latest.yml + if-no-files-found: error + + + macos-build: + name: MacOS Build + runs-on: macos-11 + needs: setup + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Set Node options + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Rust + shell: pwsh + run: rustup target install aarch64-apple-darwin + + - name: Print environment + run: | + node --version + npm --version + rustup show + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Cache Build + id: build-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Cache Safari + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: dist-safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + shell: bash + env: + DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + run: | + mkdir -p $HOME/secrets + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden-desktop-key.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/macdev-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + - name: Set up keychain + shell: bash + env: + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} + DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} + APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} + MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + run: | + security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + security set-keychain-settings -lut 1200 build.keychain + security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + + - name: Set up provisioning profiles + shell: bash + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path $env:GITHUB_WORKSPACE\electron-builder.json | ConvertFrom-Json; + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; + $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\electron-builder.json; + + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/*.node + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + + - name: Install Node dependencies + run: npm ci + + - name: Build application (dev) + run: npm run build + + - name: Create Safari directory + shell: pwsh + run: New-Item ./dist-safari -ItemType Directory -ea 0 + + - name: Checkout browser extension + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + with: + repository: 'bitwarden/browser' + path: 'dist-safari/bitwarden' + ref: ${{ needs.setup.outputs.safari_ref }} + + - name: Build Safari extension + run: | + npm install + npm run dist:safari + working-directory: dist-safari/bitwarden/apps/browser + + + macos-package-github: + name: MacOS Package GitHub Release Assets + runs-on: macos-11 + needs: + - setup + - macos-build + - lint + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Set Node options + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Rust + shell: pwsh + run: rustup target install aarch64-apple-darwin + + - name: Print environment + run: | + node --version + npm --version + rustup show + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Get Build Cache + id: build-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Setup Safari Cache + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: dist-safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + shell: bash + env: + DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + run: | + mkdir -p $HOME/secrets + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden-desktop-key.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/macdev-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + - name: Set up keychain + shell: bash + env: + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} + DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} + APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} + MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + run: | + security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + security set-keychain-settings -lut 1200 build.keychain + security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + + - name: Set up provisioning profiles + shell: bash + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path $env:GITHUB_WORKSPACE\electron-builder.json | ConvertFrom-Json; + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; + $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\electron-builder.json; + + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/*.node + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + + - name: NPM install + run: npm ci + + - name: Build + if: steps.build-cache.outputs.cache-hit != 'true' + run: npm run build + + - name: Create Safari directory + if: steps.safari-cache.outputs.cache-hit != 'true' + shell: pwsh + run: New-Item ./dist-safari -ItemType Directory -ea 0 + + - name: Checkout browser extension + if: steps.safari-cache.outputs.cache-hit != 'true' + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + with: + repository: 'bitwarden/bitwarden' + path: 'dist-safari/bitwarden' + ref: ${{ needs.setup.outputs.safari_ref }} + + - name: Build Safari extension + if: steps.safari-cache.outputs.cache-hit != 'true' + run: | + npm install + npm run dist:safari + working-directory: dist-safari/bitwarden/apps/browser + + - name: Load Safari extension for .dmg + working-directory: dist-safari/bitwarden/apps/browser + run: | + mkdir PlugIns + cp -r dist/Safari/dmg/build/Release/safari.appex PlugIns/safari.appex + + - name: Build application (dist) + env: + APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + run: npm run pack:mac + + - name: Upload .zip artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal-mac.zip + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal-mac.zip + if-no-files-found: error + + - name: Upload .dmg artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg + if-no-files-found: error + + - name: Upload .dmg blockmap artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg.blockmap + path: ./dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg.blockmap + if-no-files-found: error + + - name: Upload latest auto-update artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: latest-mac.yml + path: ./dist/latest-mac.yml + if-no-files-found: error + + + macos-package-mas: + name: MacOS Package Prod Release Asset + runs-on: macos-11 + needs: + - setup + - macos-build + - lint + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Set Node options + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Rust + shell: pwsh + run: rustup target install aarch64-apple-darwin + + - name: Print environment + run: | + node --version + npm --version + rustup show + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Get Build Cache + id: build-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Setup Safari Cache + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: dist-safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + shell: bash + env: + DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + run: | + mkdir -p $HOME/secrets + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden-desktop-key.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/macdev-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + - name: Set up keychain + shell: bash + env: + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} + DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} + APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} + MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + run: | + security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + security set-keychain-settings -lut 1200 build.keychain + security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + + - name: Set up provisioning profiles + shell: bash + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path $env:GITHUB_WORKSPACE\electron-builder.json | ConvertFrom-Json; + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; + $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\electron-builder.json; + + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/*.node + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + + - name: NPM install + run: npm ci + + - name: Build + if: steps.build-cache.outputs.cache-hit != 'true' + run: npm run build + + - name: Create Safari directory + if: steps.safari-cache.outputs.cache-hit != 'true' + shell: pwsh + run: New-Item ./dist-safari -ItemType Directory -ea 0 + + - name: Checkout browser extension + if: steps.safari-cache.outputs.cache-hit != 'true' + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + with: + repository: 'bitwarden/browser' + path: 'dist-safari/bitwarden' + ref: ${{ needs.setup.outputs.safari_ref }} + + - name: Build Safari extension + if: steps.safari-cache.outputs.cache-hit != 'true' + run: | + npm install + npm run dist:safari + working-directory: dist-safari/bitwarden/apps/browser + + - name: Load Safari extension for App Store + working-directory: dist-safari/bitwarden/apps/browser + run: | + mkdir PlugIns + cp -r dist/Safari/mas/build/Release/safari.appex PlugIns/safari.appex + + - name: Build application for App Store + run: npm run pack:mac:mas + env: + APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + + - name: Upload .pkg artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.pkg + path: ./dist/mas-universal/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.pkg + if-no-files-found: error + + - name: Deploy to TestFlight + env: + APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + if: | + (github.ref == 'refs/heads/master' + && needs.setup.outputs.rc_branch_exists == 0 + && needs.setup.outputs.hotfix_branch_exists == 0) + || (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0) + || github.ref == 'refs/heads/hotfix-rc' + run: npm run upload:mas + + + macos-package-dev: + name: MacOS Package Dev Release Asset + if: false # We need to look into how code signing works for dev + runs-on: macos-11 + needs: + - setup + - macos-build + - lint + env: + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '16' + + - name: Set Node options + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + + - name: Install node-gyp + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Print environment + run: | + node --version + npm --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Get Build Cache + id: build-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: build + key: ${{ runner.os }}-${{ github.run_id }}-build + + - name: Setup Safari Cache + id: safari-cache + uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed + with: + path: dist-safari + key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + + - name: Decrypt secrets + shell: bash + env: + DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + run: | + mkdir -p $HOME/secrets + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden-desktop-key.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/appstore-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-app-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/devid-installer-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/macdev-cert.p12" \ + "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ + --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ + "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + - name: Set up keychain + shell: bash + env: + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} + DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} + APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} + MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + run: | + security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + security set-keychain-settings -lut 1200 build.keychain + security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + + - name: Set up provisioning profiles + shell: bash + run: | + cp $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + $GITHUB_WORKSPACE/bitwarden_desktop_appstore.provisionprofile + + - name: Increment version + shell: pwsh + env: + BUILD_NUMBER: ${{ needs.setup.outputs.build_number }} + run: | + $package = Get-Content -Raw -Path $env:GITHUB_WORKSPACE\electron-builder.json | ConvertFrom-Json; + $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; + $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\electron-builder.json; + + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/*.node + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + + - name: NPM install + run: npm ci + + - name: Build + if: steps.build-cache.outputs.cache-hit != 'true' + run: npm run build + + - name: Create Safari directory + if: steps.safari-cache.outputs.cache-hit != 'true' + shell: pwsh + run: New-Item ./dist-safari -ItemType Directory -ea 0 + + - name: Checkout browser extension + if: steps.safari-cache.outputs.cache-hit != 'true' + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + with: + repository: 'bitwarden/browser' + path: 'dist-safari/bitwarden' + ref: ${{ needs.setup.outputs.safari_ref }} + + - name: Build Safari extension + if: steps.safari-cache.outputs.cache-hit != 'true' + run: | + npm install + npm run dist:safari + working-directory: dist-safari/bitwarden/apps/browser + + - name: Load Safari extension for App Store + working-directory: dist-safari/bitwarden/apps/browser + run: | + mkdir PlugIns + cp -r dist/Safari/masdev/build/Release/safari.appex PlugIns/safari.appex + + - name: Build dev application for App Store + run: npm run pack:mac:masdev + env: + APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + + - name: Zip masdev asset + working-directory: ./dist/mas-dev-universal + run: zip -r Bitwarden-${{ env.PACKAGE_VERSION }}-masdev-universal.zip Bitwarden.app + + - name: Upload masdev artifact + uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 + with: + name: Bitwarden-${{ env._PACKAGE_VERSION }}-masdev-universal.zip + path: ./dist/mas-universal/Bitwarden-${{ env._PACKAGE_VERSION }}-masdev-universal.zip + if-no-files-found: error + + + crowdin-push: + name: Crowdin Push + if: github.ref == 'refs/heads/master' + needs: + - linux + - windows + - macos-package-github + - macos-package-mas + runs-on: ubuntu-20.04 + env: + _CROWDIN_PROJECT_ID: "299360" + steps: + - name: Checkout repo + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 + + - name: Login to Azure + uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" + + - name: Upload Sources + uses: crowdin/github-action@9237b4cb361788dfce63feb2e2f15c09e2fe7415 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} + with: + config: crowdin.yml + crowdin_branch_name: master + upload_sources: true + upload_translations: false + + + check-failures: + name: Check for failures + if: always() + runs-on: ubuntu-20.04 + needs: + - cloc + - setup + - lint + - linux + - windows + - macos-build + - macos-package-github + - macos-package-mas + - crowdin-push + steps: + - name: Check if any job failed + if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} + env: + CLOC_STATUS: ${{ needs.cloc.result }} + SETUP_STATUS: ${{ needs.setup.result }} + LINT_STATUS: ${{ needs.lint.result }} + LINUX_STATUS: ${{ needs.linux.result }} + WINDOWS_STATUS: ${{ needs.windows.result }} + MACOS_BUILD_STATUS: ${{ needs.macos-build.result }} + MACOS_PKG_GITHUB_STATUS: ${{ needs.macos-package-github.result }} + MACOS_PKG_MAS_STATUS: ${{ needs.macos-package-mas.result }} + CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} + run: | + if [ "$CLOC_STATUS" = "failure" ]; then + exit 1 + elif [ "$SETUP_STATUS" = "failure" ]; then + exit 1 + elif [ "$LINT_STATUS" = "failure" ]; then + exit 1 + elif [ "$LINUX_STATUS" = "failure" ]; then + exit 1 + elif [ "$WINDOWS_STATUS" = "failure" ]; then + exit 1 + elif [ "$MACOS_BUILD_STATUS" = "failure" ]; then + exit 1 + elif [ "$MACOS_PKG_GITHUB_STATUS" = "failure" ]; then + exit 1 + elif [ "$MACOS_PKG_MAS_STATUS" = "failure" ]; then + exit 1 + elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then + exit 1 + fi + + - name: Login to Azure - Prod Subscription + uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf + if: failure() + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f + if: failure() + with: + keyvault: "bitwarden-prod-kv" + secrets: "devops-alerts-slack-webhook-url" + + - name: Notify Slack on failure + uses: act10ns/slack@da3191ebe2e67f49b46880b4633f5591a96d1d33 + if: failure() + env: + SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} + with: + status: ${{ job.status }} diff --git a/apps/desktop/.github/workflows/crowndin-pull.yml b/apps/desktop/.github/workflows/crowndin-pull.yml new file mode 100644 index 0000000000..623767ae49 --- /dev/null +++ b/apps/desktop/.github/workflows/crowndin-pull.yml @@ -0,0 +1,49 @@ +--- +name: Crowdin Sync + +on: + workflow_dispatch: + inputs: {} + schedule: + - cron: "0 0 * * 5" + +jobs: + crowdin-sync: + name: Autosync + runs-on: ubuntu-20.04 + env: + _CROWDIN_PROJECT_ID: "299360" + steps: + - name: Checkout repo + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 + + - name: Login to Azure + uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403 + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" + + - name: Download translations + uses: crowdin/github-action@e39093fd75daae7859c68eded4b43d42ec78d8ea + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} + with: + config: crowdin.yml + crowdin_branch_name: master + upload_sources: false + upload_translations: false + download_translations: true + github_user_name: "github-actions" + github_user_email: "<>" + commit_message: "Autosync the updated translations" + localization_branch_name: crowdin-auto-sync + create_pull_request: true + pull_request_title: "Autosync Crowdin Translations" + pull_request_body: "Autosync the updated translations" diff --git a/apps/desktop/.github/workflows/enforce-labels.yml b/apps/desktop/.github/workflows/enforce-labels.yml new file mode 100644 index 0000000000..0a63c70e4a --- /dev/null +++ b/apps/desktop/.github/workflows/enforce-labels.yml @@ -0,0 +1,16 @@ +--- +name: Enforce PR labels + +on: + pull_request: + types: [labeled, unlabeled, opened, edited, synchronize] +jobs: + enforce-label: + name: EnforceLabel + runs-on: ubuntu-20.04 + steps: + - name: Enforce Label + uses: yogevbd/enforce-label-action@8d1e1709b1011e6d90400a0e6cf7c0b77aa5efeb + with: + BANNED_LABELS: "hold" + BANNED_LABELS_DESCRIPTION: "PRs on hold cannot be merged" diff --git a/apps/desktop/.github/workflows/release.yml b/apps/desktop/.github/workflows/release.yml new file mode 100644 index 0000000000..fc4efbd9f0 --- /dev/null +++ b/apps/desktop/.github/workflows/release.yml @@ -0,0 +1,213 @@ +--- +name: Release + +on: + workflow_dispatch: + inputs: + release_type: + description: 'Release Options' + required: true + default: 'Initial Release' + type: choice + options: + - Initial Release + - Redeploy + - Dry Run + +jobs: + setup: + name: Setup + runs-on: ubuntu-20.04 + outputs: + package_version: ${{ steps.retrieve-version.outputs.package_version }} + branch-name: ${{ steps.branch.outputs.branch-name }} + steps: + - name: Branch check + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + run: | + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then + echo "===================================" + echo "[!] Can only release from the 'rc' or 'hotfix-rc' branches" + echo "===================================" + exit 1 + fi + + - name: Checkout repo + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 + + - name: Get Package Version + id: retrieve-version + run: | + PKG_VERSION=$(jq -r .version src/package.json) + echo "::set-output name=package_version::$PKG_VERSION" + + - name: Check to make sure Desktop release version has been bumped + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + latest_ver=$(hub release -L 1 -f '%T') + latest_ver=${latest_ver:1} + echo "Latest version: $latest_ver" + ver=${{ steps.retrieve-version.outputs.package_version }} + echo "Version: $ver" + if [ "$latest_ver" = "$ver" ] && \ + [ "${{ github.event.inputs.release_type }}" == "Initial Release" ]; then + echo "Version has not been bumped!" + exit 1 + fi + + - name: Get branch name + id: branch + run: | + BRANCH_NAME=$(basename ${{ github.ref }}) + echo "::set-output name=branch-name::$BRANCH_NAME" + + - name: Login to Azure + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@b5c723b9ac7870c022b8c35befe620b7009b336f + with: + keyvault: "bitwarden-prod-kv" + secrets: "aws-electron-access-id, aws-electron-access-key" + + - name: Download all artifacts + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build.yml + workflow_conclusion: success + branch: ${{ steps.branch.outputs.branch-name }} + path: ./artifacts + + - name: Rename .pkg to .pkg.archive + env: + PKG_VERSION: ${{ steps.retrieve-version.outputs.package_version }} + working-directory: ./artifacts + run: mv Bitwarden-${{ env.PKG_VERSION }}-universal.pkg Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive + + - name: Publish artifacts to S3 + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.aws-electron-access-key }} + AWS_DEFAULT_REGION: 'us-west-2' + run: | + aws s3 cp ./artifacts s3://public-s3-electron-artifacts/desktop/ \ + --acl "public-read" \ + --recursive \ + --quiet + + - name: Create release + uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 # v2.8.5 + env: + PKG_VERSION: ${{ steps.retrieve-version.outputs.package_version }} + with: + artifacts: "artifacts/Bitwarden-${{ env.PKG_VERSION }}-amd64.deb, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-x86_64.rpm, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.freebsd, + artifacts/bitwarden_${{ env.PKG_VERSION }}_amd64.snap, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-x86_64.AppImage, + artifacts/Bitwarden-Portable-${{ env.PKG_VERSION }}.exe, + artifacts/Bitwarden-Installer-${{ env.PKG_VERSION }}.exe, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32-store.appx, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32.appx, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-ia32.nsis.7z, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64-store.appx, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.appx, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-x64.nsis.7z, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64-store.appx, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64.appx, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-arm64.nsis.7z, + artifacts/bitwarden.${{ env.PKG_VERSION }}.nupkg, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal-mac.zip, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.dmg, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.dmg.blockmap, + artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive" + commit: ${{ github.sha }} + tag: v${{ env.PKG_VERSION }} + name: Version ${{ env.PKG_VERSION }} + body: "" + token: ${{ secrets.GITHUB_TOKEN }} + draft: true + + snap: + name: Deploy Snap + runs-on: ubuntu-20.04 + needs: setup + env: + _PKG_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 + + - name: Login to Azure + uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403 + with: + keyvault: "bitwarden-prod-kv" + secrets: "snapcraft-store-token" + + - name: Install Snap + uses: samuelmeuli/action-snapcraft@10d7d0a84d9d86098b19f872257df314b0bd8e2d # v1.2.0 + with: + snapcraft_token: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }} + + - name: Setup + run: mkdir dist + + - name: Download Snap artifact + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build.yml + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bitwarden_${{ env._PKG_VERSION }}_amd64.snap + path: ./dist + + - name: Deploy to Snap Store + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + run: | + snapcraft upload dist/bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable + snapcraft logout + + choco: + name: Deploy Choco + runs-on: windows-2019 + needs: setup + env: + _PKG_VERSION: ${{ needs.setup.outputs.package_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 + + - name: Setup Chocolatey + run: choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/ + env: + CHOCO_API_KEY: ${{ secrets.CHOCO_API_KEY }} + + - name: Make dist dir + shell: pwsh + run: New-Item -ItemType directory -Path ./dist + + - name: Download choco artifact + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build.yml + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch-name }} + artifacts: bitwarden.${{ env._PKG_VERSION }}.nupkg + path: ./dist + + - name: Push to Chocolatey + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + shell: pwsh + run: | + cd dist + choco push diff --git a/apps/desktop/.github/workflows/version-bump.yml b/apps/desktop/.github/workflows/version-bump.yml new file mode 100644 index 0000000000..77fd2a0809 --- /dev/null +++ b/apps/desktop/.github/workflows/version-bump.yml @@ -0,0 +1,65 @@ +--- +name: Version Bump + +on: + workflow_dispatch: + inputs: + version_number: + description: "New Version" + required: true + +jobs: + bump_version: + name: "Create version_bump_${{ github.event.inputs.version_number }} branch" + runs-on: ubuntu-20.04 + steps: + - name: Checkout Branch + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + + - name: Create Version Branch + run: | + git switch -c version_bump_${{ github.event.inputs.version_number }} + git push -u origin version_bump_${{ github.event.inputs.version_number }} + + - name: Checkout Version Branch + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + with: + ref: version_bump_${{ github.event.inputs.version_number }} + + - name: Bump Version - Package + uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945 + with: + version: ${{ github.event.inputs.version_number }} + file_path: "./src/package.json" + + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -m "Bumped version to ${{ github.event.inputs.version_number }}" -a + + - name: Push changes + run: git push -u origin version_bump_${{ github.event.inputs.version_number }} + + - name: Create Version PR + env: + PR_BRANCH: "version_bump_${{ github.event.inputs.version_number }}" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + BASE_BRANCH: master + TITLE: "Bump version to ${{ github.event.inputs.version_number }}" + run: | + gh pr create --title "$TITLE" \ + --base "$BASE" \ + --head "$PR_BRANCH" \ + --label "version update" \ + --label "automated pr" \ + --body " + ## Type of change + - [ ] Bug fix + - [ ] New feature development + - [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc) + - [ ] Build/deploy pipeline (DevOps) + - [X] Other + + ## Objective + Automated version bump to ${{ github.event.inputs.version_number }}" diff --git a/apps/desktop/.github/workflows/workflow-linter.yml b/apps/desktop/.github/workflows/workflow-linter.yml new file mode 100644 index 0000000000..9fda2eee0a --- /dev/null +++ b/apps/desktop/.github/workflows/workflow-linter.yml @@ -0,0 +1,11 @@ +--- +name: Workflow Linter + +on: + pull_request: + paths: + - .github/workflows/** + +jobs: + call-workflow: + uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@master diff --git a/apps/desktop/.gitignore b/apps/desktop/.gitignore new file mode 100644 index 0000000000..1781b9ed5e --- /dev/null +++ b/apps/desktop/.gitignore @@ -0,0 +1,18 @@ +.vs +.idea +node_modules +npm-debug.log +vwd.webinfo +dist/ +dist-safari/ +css/ +*.crx +*.pem +build/ +yarn-error.log +.DS_Store +*.nupkg +*.provisionprofile +*.env +PlugIns/safari.appex/ +PlugIns/safari-legacy.appex/ diff --git a/apps/desktop/.husky/.gitignore b/apps/desktop/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/apps/desktop/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/apps/desktop/.husky/pre-commit b/apps/desktop/.husky/pre-commit new file mode 100644 index 0000000000..36af219892 --- /dev/null +++ b/apps/desktop/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged diff --git a/apps/desktop/.nvmrc b/apps/desktop/.nvmrc new file mode 100644 index 0000000000..f0b10f153f --- /dev/null +++ b/apps/desktop/.nvmrc @@ -0,0 +1 @@ +v16.13.1 diff --git a/apps/desktop/.prettierignore b/apps/desktop/.prettierignore new file mode 100644 index 0000000000..5910357de2 --- /dev/null +++ b/apps/desktop/.prettierignore @@ -0,0 +1,14 @@ +# Build directories +build +dist +dist-safari +desktop_native + +jslib + +# External libraries / auto synced locales +src/locales +src/scripts/duo.js + +# Github Workflows +.github/workflows diff --git a/apps/desktop/.prettierrc.json b/apps/desktop/.prettierrc.json new file mode 100644 index 0000000000..de753c537d --- /dev/null +++ b/apps/desktop/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "printWidth": 100 +} diff --git a/apps/desktop/.vscode/launch.json b/apps/desktop/.vscode/launch.json new file mode 100644 index 0000000000..66c1161be4 --- /dev/null +++ b/apps/desktop/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Main Process", + "type": "node", + "request": "launch", + "cwd": "${workspaceRoot}/build", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron", + "windows": { + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd" + }, + "args": ["."] + } + ] +} diff --git a/apps/desktop/CONTRIBUTING.md b/apps/desktop/CONTRIBUTING.md new file mode 100644 index 0000000000..a083eedb75 --- /dev/null +++ b/apps/desktop/CONTRIBUTING.md @@ -0,0 +1,36 @@ +# How to Contribute + +Contributions of all kinds are welcome! + +Please visit our [Community Forums](https://community.bitwarden.com/) for general community discussion and the development roadmap. + +Here is how you can get involved: + +- **Request a new feature:** Go to the [Feature Requests category](https://community.bitwarden.com/c/feature-requests/) of the Community Forums. Please search existing feature requests before making a new one +- **Write code for a new feature:** Make a new post in the [Github Contributions category](https://community.bitwarden.com/c/github-contributions/) of the Community Forums. Include a description of your proposed contribution, screeshots, and links to any relevant feature requests. This helps get feedback from the community and Bitwarden team members before you start writing code +- **Report a bug or submit a bugfix:** Use Github issues and pull requests +- **Write documentation:** Submit a pull request to the [Bitwarden help repository](https://github.com/bitwarden/help) +- **Help other users:** Go to the [Ask the Bitwarden Community category](https://community.bitwarden.com/c/support/) on the Community Forums +- **Translate:** See the localization (l10n) section below + +## Contributor Agreement + +Please sign the [Contributor Agreement](https://cla-assistant.io/bitwarden/desktop) if you intend on contributing to any Github repository. Pull requests cannot be accepted and merged unless the author has signed the Contributor Agreement. + +## Pull Request Guidelines + +- use `npm run lint` and fix any linting suggestions before submitting a pull request +- commit any pull requests against the `master` branch +- include a link to your Community Forums post + +# Localization (l10n) + +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/bitwarden-desktop/localized.svg)](https://crowdin.com/project/bitwarden-desktop) + +We use a translation tool called [Crowdin](https://crowdin.com) to help manage our localization efforts across many different languages. + +If you are interested in helping translate the Bitwarden desktop app into another language (or make a translation correction), please register an account at Crowdin and join our project here: https://crowdin.com/project/bitwarden-desktop + +If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/profile/dwbit). + +You can read Crowdin's getting started guide for translators here: https://support.crowdin.com/crowdin-intro/ diff --git a/apps/desktop/LICENSE.txt b/apps/desktop/LICENSE.txt new file mode 100644 index 0000000000..30ace6a873 --- /dev/null +++ b/apps/desktop/LICENSE.txt @@ -0,0 +1,674 @@ + 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. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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: + + {project} Copyright (C) {year} {fullname} + 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 +. \ No newline at end of file diff --git a/apps/desktop/README.md b/apps/desktop/README.md new file mode 100644 index 0000000000..189d3ab0d1 --- /dev/null +++ b/apps/desktop/README.md @@ -0,0 +1,77 @@ +[![Github Workflow build on master](https://github.com/bitwarden/desktop/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/bitwarden/desktop/actions/workflows/build.yml?query=branch:master) +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/bitwarden-desktop/localized.svg)](https://crowdin.com/project/bitwarden-desktop) +[![Join the chat at https://gitter.im/bitwarden/Lobby](https://badges.gitter.im/bitwarden/Lobby.svg)](https://gitter.im/bitwarden/Lobby) + +> **Repository Reorganization in Progress** +> +> We are currently migrating some projects over to a mono repository. For existing PR's we will be providing documentation on how to move/migrate them. To minimize the overhead we are actively reviewing open PRs. If possible please ensure any pending comments are resolved as soon as possible. +> +> New pull requests created during this transition period may not get addressed —if needed, please create a new PR after the reorganization is complete. + +# Bitwarden Desktop Application + +[![Platforms](https://imgur.com/SLv9paA.png "Windows, macOS, and Linux")](https://bitwarden.com/download/) + +The Bitwarden desktop app is written using Electron and Angular. The application installs on Windows, macOS, and Linux distributions. + +![Desktop Vault](https://github.com/bitwarden/brand/blob/f09f2fa594c8a020c315296074f18ce0a7b3f171/screenshots/desktop-macos-vault.png "My Vault") + +# Build/Run + +## Requirements + +- [Node.js](https://nodejs.org) v16.13.1 (LTS) or greater +- NPM v8 +- Windows: + - To compile the native node modules used in the app you will need the _Visual C++ toolset_, available through the standard Visual Studio installer. You will also need to install the _Microsoft Build Tools 2015_ and _Windows 10 SDK 17134_ as additional dependencies in the Visual Studio installer. +- Linux: + - The following packages `build-essential libsecret-1-dev libglib2.0-dev` + +## Run the app + +```bash +npm ci +npm run electron +``` + +### Debug Native Messaging + +Native Messaging (communication with the browser extension) works by having the browser start a lightweight proxy application baked into our desktop binary. To setup an environment which allows +for easy debugging you will need to build the application for distribution, i.e. `npm run dist:`, start the dist version and enable desktop integration. This will write some manifests +to disk, Consult the [native manifests](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location) documentation for more details of the manifest +format, and the exact locations for the different platforms. _Note_ that disabling the desktop integration will delete the manifests, and the files will need to be updated again. + +The generated manifests are pre-configured with the production ID for the browser extensions. In order to use them with the development builds, the browser extension ID of the development build +needs to be added to the `allowed_extensions` section of the manifest. These IDs are generated by the browser, and can be found in the extension settings within the browser. + +It will then be possible to run the desktop application as usual using `npm run electron` and communicate with the browser. + +# We're Hiring! + +Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our [Careers page](https://bitwarden.com/careers/) to see what opportunities are currently open as well as what it's like to work at Bitwarden. + +# Contribute + +Code contributions are welcome! Please commit any pull requests against the `master` branch. Learn more about how to contribute by reading the [`CONTRIBUTING.md`](CONTRIBUTING.md) file. + +Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file. + +## Prettier + +We recently migrated to using Prettier as code formatter. All previous branches will need to updated to avoid large merge conflicts using the following steps: + +1. Check out your local Branch +2. Run `git merge b4df834b16d4f5d4162a926a5a308bdb3ebc718b` +3. Resolve any merge conflicts, commit. +4. Run `npm run prettier` +5. Commit +6. Run `git merge -Xours 521feae535d83166e620c3c28dfc3e7b0314a00e` +7. Push + +### Git blame + +We also recommend that you configure git to ignore the prettier revision using: + +```bash +git config blame.ignoreRevsFile .git-blame-ignore-revs +``` diff --git a/apps/desktop/SECURITY.md b/apps/desktop/SECURITY.md new file mode 100644 index 0000000000..e6edb96da7 --- /dev/null +++ b/apps/desktop/SECURITY.md @@ -0,0 +1,21 @@ +Bitwarden believes that working with security researchers across the globe is crucial to keeping our users safe. If you believe you've found a security issue in our product or service, we encourage you to please submit a report through our [HackerOne Program](https://hackerone.com/bitwarden/). We welcome working with you to resolve the issue promptly. Thanks in advance! + +# Disclosure Policy + +- Let us know as soon as possible upon discovery of a potential security issue, and we'll make every effort to quickly resolve the issue. +- Provide us a reasonable amount of time to resolve the issue before any disclosure to the public or a third-party. We may publicly disclose the issue before resolving it, if appropriate. +- Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our service. Only interact with accounts you own or with explicit permission of the account holder. +- If you would like to encrypt your report, please use the PGP key with long ID `0xDE6887086F892325FEC04CC0D847525B6931381F` (available in the public keyserver pool). + +While researching, we'd like to ask you to refrain from: + +- Denial of service +- Spamming +- Social engineering (including phishing) of Bitwarden staff or contractors +- Any physical attempts against Bitwarden property or data centers + +# We want to help you! + +If you have something that you feel is close to exploitation, or if you'd like some information regarding the internal API, or generally have any questions regarding the app that would help in your efforts, please email us at https://bitwarden.com/contact and ask for that information. As stated above, Bitwarden wants to help you find issues, and is more than willing to help. + +Thank you for helping keep Bitwarden and our users safe! diff --git a/apps/desktop/crowdin.yml b/apps/desktop/crowdin.yml new file mode 100644 index 0000000000..8ea2034800 --- /dev/null +++ b/apps/desktop/crowdin.yml @@ -0,0 +1,16 @@ +project_id_env: _CROWDIN_PROJECT_ID +api_token_env: CROWDIN_API_TOKEN +preserve_hierarchy: true +files: + - source: /src/locales/en/messages.json + dest: /src/locales/en/%original_file_name% + translation: /src/locales/%two_letters_code%/%original_file_name% + update_option: update_as_unapproved + languages_mapping: + two_letters_code: + pt-PT: pt_PT + pt-BR: pt_BR + zh-CN: zh_CN + zh-TW: zh_TW + en-GB: en_GB + en-IN: en_IN diff --git a/apps/desktop/desktop_native/.gitignore b/apps/desktop/desktop_native/.gitignore new file mode 100644 index 0000000000..96e7a71e1b --- /dev/null +++ b/apps/desktop/desktop_native/.gitignore @@ -0,0 +1,6 @@ +target +index.node +**/node_modules +**/.DS_Store +npm-debug.log* +*.node diff --git a/apps/desktop/desktop_native/Cargo.lock b/apps/desktop/desktop_native/Cargo.lock new file mode 100644 index 0000000000..aec92d256a --- /dev/null +++ b/apps/desktop/desktop_native/Cargo.lock @@ -0,0 +1,946 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "159bb86af3a200e19a068f4224eae4c8bb2d0fa054c7e5d1cacd5cef95e684cd" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bytes" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-expr" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e068cb2806bbc15b439846dc16c5f89f8599f2c3e4d73d4449d38f9b2f0b6c5" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "ctor" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "cxx" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2295fe8865279f404147e9b2328e5af0ad11a2c016e58c13acfd48a07d8a55" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aaaa055d4908326f1b4524b23ae53758019b806c0c4f382ea240982e9766b26" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a670224c6686471df12560a0b97a08145082e70bd38e2b0b5383b79e46c3da7" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b700096ca0dece28d9535fdb17ab784a8ae155d7f29d39c273643e6292c9620" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "desktop_native" +version = "0.0.0" +dependencies = [ + "anyhow", + "core-foundation", + "gio", + "keytar", + "libsecret", + "napi", + "napi-build", + "napi-derive", + "scopeguard", + "security-framework", + "security-framework-sys", + "tokio", + "widestring", + "windows 0.32.0", +] + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-executor" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gio" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96efd8a1c00d890f6b45671916e165b5e43ccec61957d443aff6d7e44f62d348" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "gio-sys", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d0fa5052773f5a56b8ae47dab09d040f5d9ce1311f4f99006e16e9a08269296" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa570813c504bdf7539a9400180c2dd4b789a819556fb86da7226d7d1b037b49" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41bfd8d227dead0829ac142454e97531b93f576d0805d779c42bfd799c65c572" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4366377bd56697de8aaee24e673c575d2694d72e7756324ded2b0428829a7b8" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df6859463843c20cf3837e3a9069b6ab2051aeeadf4c899d33344f4aea83189a" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "keytar" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d361c55fba09829ac620b040f5425bf239b1030c3d6820a84acac8da867dca4d" +dependencies = [ + "keytar-sys", +] + +[[package]] +name = "keytar-sys" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe908c6896705a1cb516cd6a5d956c63f08d95ace81b93253a98cd93e1e6a65a" +dependencies = [ + "cc", + "cxx", + "cxx-build", + "pkg-config", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" + +[[package]] +name = "libsecret" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4af5a2342942fa42d706a424e9f9914287fb8317132750fd73a241140ac38c1" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "libsecret-sys", + "once_cell", +] + +[[package]] +name = "libsecret-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287d2a0fcd95e4d7b0ac6fc9f802691a790d7e522138713b0cacebc4e63cab91" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "link-cplusplus" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cae2cd7ba2f3f63938b9c724475dfb7b9861b545a90324476324ed21dbc8c8" +dependencies = [ + "cc", +] + +[[package]] +name = "lock_api" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" + +[[package]] +name = "mio" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "napi" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ec66e60f000c78dd7c6215b6fa260e0591e09805024332bc5b3f55acc12244" +dependencies = [ + "ctor", + "lazy_static", + "napi-sys", + "tokio", + "windows 0.30.0", +] + +[[package]] +name = "napi-build" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd4419172727423cf30351406c54f6cc1b354a2cfb4f1dba3e6cd07f6d5522b" + +[[package]] +name = "napi-derive" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74ac5287a5e94a8728fc82d16c5127acc5eb5b8ad6404ef5f82d6a4ce8d5bdd2" +dependencies = [ + "convert_case", + "napi-derive-backend", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "napi-derive-backend" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427f4f04525635cdf22005d1be62d6d671bcb5550d694a1efb480a315422b4af" +dependencies = [ + "convert_case", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn", +] + +[[package]] +name = "napi-sys" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a385494dac3c52cbcacb393bb3b42669e7db8ab240c7ad5115f549eb061f2cc" + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" + +[[package]] +name = "parking_lot" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "scratch" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96311ef4a16462c757bb6a39152c40f58f31cd2602a40fceb937e2bc34e6cbab" + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" + +[[package]] +name = "smallvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "syn" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "system-deps" +version = "6.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +dependencies = [ + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "unicode-width" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "version-compare" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b749ebd2304aa012c5992d11a25d07b406bdbe5f79d371cb7a918ce501a19eb0" +dependencies = [ + "windows_aarch64_msvc 0.30.0", + "windows_i686_gnu 0.30.0", + "windows_i686_msvc 0.30.0", + "windows_x86_64_gnu 0.30.0", + "windows_x86_64_msvc 0.30.0", +] + +[[package]] +name = "windows" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" +dependencies = [ + "windows_aarch64_msvc 0.32.0", + "windows_i686_gnu 0.32.0", + "windows_i686_msvc 0.32.0", + "windows_x86_64_gnu 0.32.0", + "windows_x86_64_msvc 0.32.0", +] + +[[package]] +name = "windows-sys" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +dependencies = [ + "windows_aarch64_msvc 0.32.0", + "windows_i686_gnu 0.32.0", + "windows_i686_msvc 0.32.0", + "windows_x86_64_gnu 0.32.0", + "windows_x86_64_msvc 0.32.0", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_i686_gnu" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_msvc" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" diff --git a/apps/desktop/desktop_native/Cargo.toml b/apps/desktop/desktop_native/Cargo.toml new file mode 100644 index 0000000000..dbc2760295 --- /dev/null +++ b/apps/desktop/desktop_native/Cargo.toml @@ -0,0 +1,43 @@ +[package] +edition = "2021" +exclude = ["index.node"] +license = "GPL-3.0" +name = "desktop_native" +version = "0.0.0" + +[lib] +crate-type = ["cdylib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +anyhow = "1.0" +napi = {version = "2", features = ["async"]} +napi-derive = "2" +scopeguard = "1.1.0" +tokio = {version = "1.17.0", features = ["full"]} + +[build-dependencies] +napi-build = "1" + +[target.'cfg(windows)'.dependencies] +widestring = "0.5.1" +windows = {version = "0.32.0", features = [ + "alloc", + "Foundation", + "Storage_Streams", + "Win32_Foundation", + "Win32_Security_Credentials", +]} + +[target.'cfg(windows)'.dev-dependencies] +keytar = "0.1.6" + +[target.'cfg(target_os = "macos")'.dependencies] +core-foundation = "0.9.3" +security-framework = "2.6.1" +security-framework-sys = "2.6.1" + +[target.'cfg(target_os = "linux")'.dependencies] +gio = "0.15.6" +libsecret = "0.1.4" diff --git a/apps/desktop/desktop_native/build.js b/apps/desktop/desktop_native/build.js new file mode 100644 index 0000000000..ca42f7b0c2 --- /dev/null +++ b/apps/desktop/desktop_native/build.js @@ -0,0 +1,22 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const child_process = require("child_process"); +const process = require("process"); + +let targets = []; +switch (process.platform) { + case "win32": + targets = ["i686-pc-windows-msvc", "x86_64-pc-windows-msvc", "aarch64-pc-windows-msvc"]; + break; + + case "darwin": + targets = ["x86_64-apple-darwin", "aarch64-apple-darwin"]; + break; + + default: + targets = ['x86_64-unknown-linux-gnu']; + break; +} + +targets.forEach(target => { + child_process.execSync(`npm run build -- --target ${target}`, {stdio: 'inherit'}); +}); diff --git a/apps/desktop/desktop_native/build.rs b/apps/desktop/desktop_native/build.rs new file mode 100644 index 0000000000..9fc2367889 --- /dev/null +++ b/apps/desktop/desktop_native/build.rs @@ -0,0 +1,5 @@ +extern crate napi_build; + +fn main() { + napi_build::setup(); +} diff --git a/apps/desktop/desktop_native/index.d.ts b/apps/desktop/desktop_native/index.d.ts new file mode 100644 index 0000000000..6ac55a1558 --- /dev/null +++ b/apps/desktop/desktop_native/index.d.ts @@ -0,0 +1,15 @@ +/* tslint:disable */ +/* eslint-disable */ + +/* auto-generated by NAPI-RS */ + +export namespace passwords { + /** Fetch the stored password from the keychain. */ + export function getPassword(service: string, account: string): Promise + /** Fetch the stored password from the keychain that was stored with Keytar. */ + export function getPasswordKeytar(service: string, account: string): Promise + /** Save the password to the keychain. Adds an entry if none exists otherwise updates the existing entry. */ + export function setPassword(service: string, account: string, password: string): Promise + /** Delete the stored password from the keychain. */ + export function deletePassword(service: string, account: string): Promise +} diff --git a/apps/desktop/desktop_native/index.js b/apps/desktop/desktop_native/index.js new file mode 100644 index 0000000000..8866118c01 --- /dev/null +++ b/apps/desktop/desktop_native/index.js @@ -0,0 +1,241 @@ +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') + +const { platform, arch } = process + +let nativeBinding = null +let localFileExisted = false +let loadError = null + +function isMusl() { + // For Node 10 + if (!process.report || typeof process.report.getReport !== 'function') { + try { + return readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + } catch (e) { + return true + } + } else { + const { glibcVersionRuntime } = process.report.getReport().header + return !glibcVersionRuntime + } +} + +switch (platform) { + case 'android': + switch (arch) { + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'desktop_native.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.android-arm64.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'desktop_native.android-arm-eabi.node')) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.android-arm-eabi.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-android-arm-eabi') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Android ${arch}`) + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync( + join(__dirname, 'desktop_native.win32-x64-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.win32-x64-msvc.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync( + join(__dirname, 'desktop_native.win32-ia32-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.win32-ia32-msvc.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync( + join(__dirname, 'desktop_native.win32-arm64-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.win32-arm64-msvc.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'desktop_native.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.darwin-x64.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync( + join(__dirname, 'desktop_native.darwin-arm64.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.darwin-arm64.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'desktop_native.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.freebsd-x64.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'desktop_native.linux-x64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.linux-x64-musl.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'desktop_native.linux-x64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.linux-x64-gnu.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'desktop_native.linux-arm64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.linux-arm64-musl.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'desktop_native.linux-arm64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.linux-arm64-gnu.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync( + join(__dirname, 'desktop_native.linux-arm-gnueabihf.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./desktop_native.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('@bitwarden/desktop_native-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) +} + +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) +} + +const { passwords } = nativeBinding + +module.exports.passwords = passwords diff --git a/apps/desktop/desktop_native/package-lock.json b/apps/desktop/desktop_native/package-lock.json new file mode 100644 index 0000000000..70e590de3d --- /dev/null +++ b/apps/desktop/desktop_native/package-lock.json @@ -0,0 +1,41 @@ +{ + "name": "@bitwarden/desktop_native", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@bitwarden/desktop_native", + "version": "0.1.0", + "hasInstallScript": true, + "license": "GPL-3.0", + "devDependencies": { + "@napi-rs/cli": "^2.6.2" + } + }, + "node_modules/@napi-rs/cli": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.6.2.tgz", + "integrity": "sha512-EmH+DQDEBUIoqMim0cc+X96ImtcIZLFjgW5WWORpzYnA9Ug7zNPO7jCLMhIQRd/p5AdWaXrT4SVXc/aip09rKQ==", + "dev": true, + "bin": { + "napi": "scripts/index.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + } + }, + "dependencies": { + "@napi-rs/cli": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.6.2.tgz", + "integrity": "sha512-EmH+DQDEBUIoqMim0cc+X96ImtcIZLFjgW5WWORpzYnA9Ug7zNPO7jCLMhIQRd/p5AdWaXrT4SVXc/aip09rKQ==", + "dev": true + } + } +} diff --git a/apps/desktop/desktop_native/package.json b/apps/desktop/desktop_native/package.json new file mode 100644 index 0000000000..97f12ce0bf --- /dev/null +++ b/apps/desktop/desktop_native/package.json @@ -0,0 +1,32 @@ +{ + "name": "@bitwarden/desktop_native", + "version": "0.1.0", + "description": "", + "main": "index.node", + "scripts": { + "build": "napi build --release --platform", + "build:debug": "napi build --platform", + "build:cross-platform": "node build.js", + "test": "cargo test" + }, + "author": "", + "license": "GPL-3.0", + "devDependencies": { + "@napi-rs/cli": "^2.6.2" + }, + "napi": { + "name": "desktop_native", + "triples": { + "defaults": true, + "additional": [ + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-gnu", + "i686-pc-windows-msvc", + "armv7-unknown-linux-gnueabihf", + "aarch64-apple-darwin", + "aarch64-unknown-linux-musl", + "aarch64-pc-windows-msvc" + ] + } + } +} diff --git a/apps/desktop/desktop_native/src/lib.rs b/apps/desktop/desktop_native/src/lib.rs new file mode 100644 index 0000000000..96417a8bb5 --- /dev/null +++ b/apps/desktop/desktop_native/src/lib.rs @@ -0,0 +1,39 @@ +#[macro_use] +extern crate napi_derive; + +mod password; + +#[napi] +pub mod passwords { + /// Fetch the stored password from the keychain. + #[napi] + pub async fn get_password(service: String, account: String) -> napi::Result { + super::password::get_password(&service, &account) + .map_err(|e| napi::Error::from_reason(e.to_string())) + } + + /// Fetch the stored password from the keychain that was stored with Keytar. + #[napi] + pub async fn get_password_keytar(service: String, account: String) -> napi::Result { + super::password::get_password_keytar(&service, &account) + .map_err(|e| napi::Error::from_reason(e.to_string())) + } + + /// Save the password to the keychain. Adds an entry if none exists otherwise updates the existing entry. + #[napi] + pub async fn set_password( + service: String, + account: String, + password: String, + ) -> napi::Result<()> { + super::password::set_password(&service, &account, &password) + .map_err(|e| napi::Error::from_reason(e.to_string())) + } + + /// Delete the stored password from the keychain. + #[napi] + pub async fn delete_password(service: String, account: String) -> napi::Result<()> { + super::password::delete_password(&service, &account) + .map_err(|e| napi::Error::from_reason(e.to_string())) + } +} diff --git a/apps/desktop/desktop_native/src/password/macos.rs b/apps/desktop/desktop_native/src/password/macos.rs new file mode 100644 index 0000000000..7f0c3d9f61 --- /dev/null +++ b/apps/desktop/desktop_native/src/password/macos.rs @@ -0,0 +1,59 @@ +use anyhow::Result; +use security_framework::passwords::{ + delete_generic_password, get_generic_password, set_generic_password, +}; + +pub fn get_password(service: &str, account: &str) -> Result { + let result = String::from_utf8(get_generic_password(&service, &account)?)?; + Ok(result) +} + +pub fn get_password_keytar(service: &str, account: &str) -> Result { + get_password(service, account) +} + +pub fn set_password(service: &str, account: &str, password: &str) -> Result<()> { + let result = set_generic_password(&service, &account, password.as_bytes())?; + Ok(result) +} + +pub fn delete_password(service: &str, account: &str) -> Result<()> { + let result = delete_generic_password(&service, &account)?; + Ok(result) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test() { + scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({});); + set_password("BitwardenTest", "BitwardenTest", "Random").unwrap(); + assert_eq!( + "Random", + get_password("BitwardenTest", "BitwardenTest").unwrap() + ); + delete_password("BitwardenTest", "BitwardenTest").unwrap(); + + // Ensure password is deleted + match get_password("BitwardenTest", "BitwardenTest") { + Ok(_) => panic!("Got a result"), + Err(e) => assert_eq!( + "The specified item could not be found in the keychain.", + e.to_string() + ), + } + } + + #[test] + fn test_error_no_password() { + match get_password("Unknown", "Unknown") { + Ok(_) => panic!("Got a result"), + Err(e) => assert_eq!( + "The specified item could not be found in the keychain.", + e.to_string() + ), + } + } +} diff --git a/apps/desktop/desktop_native/src/password/mod.rs b/apps/desktop/desktop_native/src/password/mod.rs new file mode 100644 index 0000000000..3cc0c28e04 --- /dev/null +++ b/apps/desktop/desktop_native/src/password/mod.rs @@ -0,0 +1,5 @@ +#[cfg_attr(target_os = "linux", path = "unix.rs")] +#[cfg_attr(target_os = "windows", path = "windows.rs")] +#[cfg_attr(target_os = "macos", path = "macos.rs")] +mod password; +pub use password::*; diff --git a/apps/desktop/desktop_native/src/password/unix.rs b/apps/desktop/desktop_native/src/password/unix.rs new file mode 100644 index 0000000000..fa808613df --- /dev/null +++ b/apps/desktop/desktop_native/src/password/unix.rs @@ -0,0 +1,91 @@ +use anyhow::{anyhow, Result}; +use libsecret::{password_clear_sync, password_lookup_sync, password_store_sync, Schema}; +use std::collections::HashMap; + +pub fn get_password(service: &str, account: &str) -> Result { + let res = password_lookup_sync( + Some(&get_schema()), + build_attributes(service, account), + gio::Cancellable::NONE, + )?; + + match res { + Some(s) => Ok(String::from(s)), + None => Err(anyhow!("No password found")), + } +} + +pub fn get_password_keytar(service: &str, account: &str) -> Result { + get_password(service, account) +} + +pub fn set_password(service: &str, account: &str, password: &str) -> Result<()> { + let result = password_store_sync( + Some(&get_schema()), + build_attributes(service, account), + Some(&libsecret::COLLECTION_DEFAULT), + &format!("{}/{}", service, account), + password, + gio::Cancellable::NONE, + )?; + Ok(result) +} + +pub fn delete_password(service: &str, account: &str) -> Result<()> { + let result = password_clear_sync( + Some(&get_schema()), + build_attributes(service, account), + gio::Cancellable::NONE, + )?; + Ok(result) +} + +fn get_schema() -> Schema { + let mut attributes = std::collections::HashMap::new(); + attributes.insert("service", libsecret::SchemaAttributeType::String); + attributes.insert("account", libsecret::SchemaAttributeType::String); + + libsecret::Schema::new( + "org.freedesktop.Secret.Generic", + libsecret::SchemaFlags::NONE, + attributes, + ) +} + +fn build_attributes<'a>(service: &'a str, account: &'a str) -> HashMap<&'a str, &'a str> { + let mut attributes = HashMap::new(); + attributes.insert("service", service); + attributes.insert("account", account); + + attributes +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test() { + scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({});); + set_password("BitwardenTest", "BitwardenTest", "Random").unwrap(); + assert_eq!( + "Random", + get_password("BitwardenTest", "BitwardenTest").unwrap() + ); + delete_password("BitwardenTest", "BitwardenTest").unwrap(); + + // Ensure password is deleted + match get_password("BitwardenTest", "BitwardenTest") { + Ok(_) => panic!("Got a result"), + Err(e) => assert_eq!("No password found", e.to_string()), + } + } + + #[test] + fn test_error_no_password() { + match get_password("BitwardenTest", "BitwardenTest") { + Ok(_) => panic!("Got a result"), + Err(e) => assert_eq!("No password found", e.to_string()), + } + } +} diff --git a/apps/desktop/desktop_native/src/password/windows.rs b/apps/desktop/desktop_native/src/password/windows.rs new file mode 100644 index 0000000000..ed2e643c2f --- /dev/null +++ b/apps/desktop/desktop_native/src/password/windows.rs @@ -0,0 +1,180 @@ +use anyhow::{anyhow, Result}; +use widestring::{U16CString, U16String}; +use windows::Win32::{ + Foundation::{GetLastError, ERROR_NOT_FOUND, FILETIME, PWSTR, WIN32_ERROR}, + Security::Credentials::{ + CredDeleteW, CredFree, CredReadW, CredWriteW, CREDENTIALW, CRED_FLAGS, + CRED_PERSIST_ENTERPRISE, CRED_TYPE_GENERIC, + }, +}; + +const CRED_FLAGS_NONE: u32 = 0; + +pub fn get_password<'a>(service: &str, account: &str) -> Result { + let target_name = U16CString::from_str(target_name(service, account))?; + + let mut credential: *mut CREDENTIALW = std::ptr::null_mut(); + let credential_ptr = &mut credential; + + let result = unsafe { + CredReadW( + PWSTR(target_name.as_ptr()), + CRED_TYPE_GENERIC.0, + CRED_FLAGS_NONE, + credential_ptr, + ) + }; + + scopeguard::defer!({ + unsafe { CredFree(credential as *mut _) }; + }); + + if !result.as_bool() { + return Err(anyhow!(convert_error(unsafe { GetLastError() }))); + } + + let password = unsafe { + U16String::from_ptr( + (*credential).CredentialBlob as *const u16, + (*credential).CredentialBlobSize as usize / 2, + ) + .to_string_lossy() + }; + + Ok(String::from(password)) +} + +// Remove this after sufficient releases +pub fn get_password_keytar<'a>(service: &str, account: &str) -> Result { + let target_name = U16CString::from_str(target_name(service, account))?; + + let mut credential: *mut CREDENTIALW = std::ptr::null_mut(); + let credential_ptr = &mut credential; + + let result = unsafe { + CredReadW( + PWSTR(target_name.as_ptr()), + CRED_TYPE_GENERIC.0, + CRED_FLAGS_NONE, + credential_ptr, + ) + }; + + scopeguard::defer!({ + unsafe { CredFree(credential as *mut _) }; + }); + + if !result.as_bool() { + return Err(anyhow!(unsafe { GetLastError() }.0.to_string())); + } + + let password = unsafe { + std::str::from_utf8_unchecked(std::slice::from_raw_parts( + (*credential).CredentialBlob, + (*credential).CredentialBlobSize as usize, + )) + }; + + Ok(String::from(password)) +} + +pub fn set_password(service: &str, account: &str, password: &str) -> Result<()> { + let target_name = U16CString::from_str(target_name(service, account))?; + let user_name = U16CString::from_str(account)?; + let last_written = FILETIME { + dwLowDateTime: 0, + dwHighDateTime: 0, + }; + + let credential = U16CString::from_str(password)?; + let credential_len = password.len() as u32 * 2; + + let credential = CREDENTIALW { + Flags: CRED_FLAGS(CRED_FLAGS_NONE), + Type: CRED_TYPE_GENERIC, + TargetName: PWSTR(target_name.as_ptr()), + Comment: PWSTR::default(), + LastWritten: last_written, + CredentialBlobSize: credential_len, + CredentialBlob: credential.as_ptr() as *mut u8, + Persist: CRED_PERSIST_ENTERPRISE, + AttributeCount: 0, + Attributes: std::ptr::null_mut(), + TargetAlias: PWSTR::default(), + UserName: PWSTR(user_name.as_ptr()), + }; + + let result = unsafe { CredWriteW(&credential, 0) }; + if !result.as_bool() { + return Err(anyhow!(unsafe { GetLastError() }.0.to_string())); + } + + Ok(()) +} + +pub fn delete_password(service: &str, account: &str) -> Result<()> { + let target_name = U16CString::from_str(target_name(service, account))?; + + unsafe { + CredDeleteW( + PWSTR(target_name.as_ptr()), + CRED_TYPE_GENERIC.0, + CRED_FLAGS_NONE, + ) + .ok()? + }; + + Ok(()) +} + +fn target_name(service: &str, account: &str) -> String { + format!("{}/{}", service, account) +} + +// Convert the internal WIN32 errors to descriptive messages +fn convert_error(code: WIN32_ERROR) -> String { + match code { + ERROR_NOT_FOUND => String::from("Password not found."), + _ => code.0.to_string(), + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test() { + scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({});); + set_password("BitwardenTest", "BitwardenTest", "Random").unwrap(); + assert_eq!( + "Random", + get_password("BitwardenTest", "BitwardenTest").unwrap() + ); + delete_password("BitwardenTest", "BitwardenTest").unwrap(); + + // Ensure password is deleted + match get_password("BitwardenTest", "BitwardenTest") { + Ok(_) => panic!("Got a result"), + Err(e) => assert_eq!("Password not found.", e.to_string()), + } + } + + #[test] + fn test_get_password_keytar() { + scopeguard::defer!(delete_password("BitwardenTest", "BitwardenTest").unwrap_or({});); + keytar::set_password("BitwardenTest", "BitwardenTest", "HelloFromKeytar").unwrap(); + assert_eq!( + "HelloFromKeytar", + get_password_keytar("BitwardenTest", "BitwardenTest").unwrap() + ); + } + + #[test] + fn test_error_no_password() { + match get_password("BitwardenTest", "BitwardenTest") { + Ok(_) => panic!("Got a result"), + Err(e) => assert_eq!("Password not found.", e.to_string()), + } + } +} diff --git a/apps/desktop/electron-builder.json b/apps/desktop/electron-builder.json new file mode 100644 index 0000000000..d07db95cc8 --- /dev/null +++ b/apps/desktop/electron-builder.json @@ -0,0 +1,121 @@ +{ + "extraMetadata": { "name": "bitwarden" }, + "productName": "Bitwarden", + "appId": "com.bitwarden.desktop", + "buildDependenciesFromSource": true, + "copyright": "Copyright © 2015-2022 Bitwarden Inc.", + "directories": { "buildResources": "resources", "output": "dist", "app": "build" }, + "afterSign": "scripts/after-sign.js", + "asarUnpack": ["**/*.node"], + "files": ["**/*", "!**/node_modules/@bitwarden/desktop-native/**/*"], + "publish": { + "provider": "generic", + "url": "https://artifacts.bitwarden.com/desktop" + }, + "mac": { + "electronUpdaterCompatibility": ">=0.0.1", + "category": "public.app-category.productivity", + "darkModeSupport": true, + "gatekeeperAssess": false, + "hardenedRuntime": true, + "entitlements": "resources/entitlements.mac.plist", + "entitlementsInherit": "resources/entitlements.mac.plist", + "extendInfo": { + "ITSAppUsesNonExemptEncryption": false, + "CFBundleLocalizations": [ + "en", + "cs", + "da", + "de", + "es", + "et", + "fi", + "fr", + "hr", + "hu", + "id", + "it", + "ja", + "nb", + "nl", + "pl", + "pt-BR", + "pt-PT", + "ro", + "ru", + "sk", + "sv", + "tr", + "uk", + "vi", + "zh-Hans", + "zh-Hant" + ], + "CFBundleDevelopmentRegion": "en" + }, + "target": ["dmg", "zip"] + }, + "win": { + "electronUpdaterCompatibility": ">=0.0.1", + "target": ["portable", "nsis-web", "appx"], + "sign": "./sign.js", + "extraResources": [ + { "from": "node_modules/regedit/vbs", "to": "regedit/vbs", "filter": ["**/*"] }, + { "from": "resources/native-messaging.bat", "to": "native-messaging.bat" } + ] + }, + "linux": { + "category": "Utility", + "synopsis": "A secure and free password manager for all of your devices.", + "target": ["deb", "freebsd", "rpm", "AppImage", "snap"], + "desktop": { "Name": "Bitwarden", "Type": "Application", "GenericName": "Password Manager" } + }, + "dmg": { + "icon": "dmg.icns", + "contents": [ + { "x": 150, "y": 185, "type": "file" }, + { "x": 390, "y": 180, "type": "link", "path": "/Applications" } + ], + "window": { "width": 540, "height": 380 } + }, + "mas": { + "entitlements": "resources/entitlements.mas.plist", + "entitlementsInherit": "resources/entitlements.mas.inherit.plist", + "hardenedRuntime": false, + "extendInfo": { "LSMinimumSystemVersion": "10.14.0" } + }, + "nsisWeb": { + "oneClick": false, + "perMachine": false, + "allowToChangeInstallationDirectory": false, + "artifactName": "${productName}-Installer-${version}.${ext}", + "uninstallDisplayName": "${productName}", + "deleteAppDataOnUninstall": true + }, + "portable": { "artifactName": "${productName}-Portable-${version}.${ext}" }, + "appx": { + "artifactName": "${productName}-${version}-${arch}.${ext}", + "backgroundColor": "#175DDC", + "applicationId": "bitwardendesktop", + "identityName": "8bitSolutionsLLC.bitwardendesktop", + "publisher": "CN=14D52771-DE3C-4886-B8BF-825BA7690418", + "publisherDisplayName": "8bit Solutions LLC", + "languages": ["en-US"] + }, + "deb": { + "artifactName": "${productName}-${version}-${arch}.${ext}", + "depends": ["libnotify4", "libxtst6", "libnss3", "libsecret-1-0", "libxss1"] + }, + "appImage": { + "artifactName": "${productName}-${version}-${arch}.${ext}" + }, + "rpm": { "artifactName": "${productName}-${version}-${arch}.${ext}" }, + "freebsd": { "artifactName": "${productName}-${version}-${arch}.${ext}" }, + "snap": { + "autoStart": true, + "confinement": "strict", + "plugs": ["default", "password-manager-service"], + "stagePackages": ["default"] + }, + "protocols": [{ "name": "Bitwarden", "schemes": ["bitwarden"] }] +} diff --git a/apps/desktop/jslib b/apps/desktop/jslib new file mode 160000 index 0000000000..80c834b52a --- /dev/null +++ b/apps/desktop/jslib @@ -0,0 +1 @@ +Subproject commit 80c834b52a8b00f88250a47a9bbd40c269fc2cba diff --git a/apps/desktop/package-lock.json b/apps/desktop/package-lock.json new file mode 100644 index 0000000000..44b5babf22 --- /dev/null +++ b/apps/desktop/package-lock.json @@ -0,0 +1,20187 @@ +{ + "name": "@bitwarden/desktop", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@bitwarden/desktop", + "version": "0.0.0", + "hasInstallScript": true, + "license": "GPL-3.0", + "dependencies": { + "@angular/animations": "^12.2.13", + "@angular/cdk": "^12.2.13", + "@angular/common": "^12.2.13", + "@angular/compiler": "^12.2.13", + "@angular/core": "^12.2.13", + "@angular/forms": "^12.2.13", + "@angular/platform-browser": "^12.2.13", + "@angular/platform-browser-dynamic": "^12.2.13", + "@angular/router": "^12.2.13", + "@bitwarden/jslib-angular": "file:jslib/angular", + "@bitwarden/jslib-common": "file:jslib/common", + "@bitwarden/jslib-electron": "file:jslib/electron", + "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", + "forcefocus": "^1.1.0", + "keytar": "^7.9.0", + "ngx-toastr": "14.1.4", + "node-ipc": "^9.1.4", + "nord": "^0.2.1", + "regedit": "^3.0.3", + "rxjs": "^7.4.0", + "sweetalert2": "^10.16.6", + "zone.js": "0.11.4" + }, + "devDependencies": { + "@angular/compiler-cli": "^12.2.13", + "@ngtools/webpack": "^12.2.13", + "@types/node": "^16.11.12", + "@types/node-ipc": "^9.1.4", + "@typescript-eslint/eslint-plugin": "^5.12.1", + "@typescript-eslint/parser": "^5.12.1", + "clean-webpack-plugin": "^4.0.0", + "concurrently": "^6.0.2", + "copy-webpack-plugin": "^10.0.0", + "cross-env": "^7.0.3", + "css-loader": "^6.5.1", + "electron-builder": "22.11.7", + "electron-notarize": "^1.1.1", + "electron-rebuild": "^3.2.5", + "electron-reload": "^1.5.0", + "eslint": "^8.9.0", + "eslint-config-prettier": "^8.4.0", + "eslint-import-resolver-typescript": "^2.5.0", + "eslint-plugin-import": "^2.25.4", + "html-loader": "^3.0.1", + "html-webpack-plugin": "^5.5.0", + "husky": "^7.0.4", + "lint-staged": "^12.1.3", + "mini-css-extract-plugin": "^2.4.5", + "node-loader": "^2.0.0", + "prettier": "^2.5.1", + "rimraf": "^3.0.2", + "sass": "^1.32.11", + "sass-loader": "^12.4.0", + "tapable": "^1.1.3", + "ts-loader": "^9.2.5", + "tsconfig-paths-webpack-plugin": "^3.5.1", + "typescript": "4.3.5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1", + "webpack-merge": "^5.8.0" + }, + "engines": { + "node": "~16", + "npm": "~8" + } + }, + "desktop_native": { + "name": "@bitwarden/desktop_native", + "version": "0.1.0", + "extraneous": true, + "license": "GPL-3.0", + "devDependencies": { + "@napi-rs/cli": "^2.6.2" + } + }, + "jslib/angular": { + "name": "@bitwarden/jslib-angular", + "version": "0.0.0", + "license": "GPL-3.0", + "dependencies": { + "@angular/animations": "^12.2.13", + "@angular/cdk": "^12.2.13", + "@angular/common": "^12.2.13", + "@angular/compiler": "^12.2.13", + "@angular/core": "^12.2.13", + "@angular/forms": "^12.2.13", + "@angular/platform-browser": "^12.2.13", + "@angular/platform-browser-dynamic": "^12.2.13", + "@angular/router": "^12.2.13", + "@bitwarden/jslib-common": "file:../common", + "duo_web_sdk": "git+https://github.com/duosecurity/duo_web_sdk.git", + "rxjs": "^7.4.0", + "tldjs": "^2.3.1", + "zone.js": "0.11.4" + }, + "devDependencies": { + "@types/duo_web_sdk": "^2.7.1", + "rimraf": "^3.0.2", + "typescript": "4.3.5" + } + }, + "jslib/common": { + "name": "@bitwarden/jslib-common", + "version": "0.0.0", + "license": "GPL-3.0", + "dependencies": { + "@microsoft/signalr": "5.0.10", + "@microsoft/signalr-protocol-msgpack": "5.0.10", + "big-integer": "1.6.48", + "browser-hrtime": "^1.1.8", + "lunr": "^2.3.9", + "node-forge": "^1.2.1", + "papaparse": "^5.3.0", + "rxjs": "^7.4.0", + "tldjs": "^2.3.1", + "zxcvbn": "^4.4.2" + }, + "devDependencies": { + "@types/lunr": "^2.3.3", + "@types/node": "^16.11.12", + "@types/node-forge": "^1.0.1", + "@types/papaparse": "^5.2.5", + "@types/tldjs": "^2.3.0", + "@types/zxcvbn": "^4.4.1", + "rimraf": "^3.0.2", + "typescript": "4.3.5" + } + }, + "jslib/electron": { + "name": "@bitwarden/jslib-electron", + "version": "0.0.0", + "license": "GPL-3.0", + "dependencies": { + "@bitwarden/jslib-common": "file:../common", + "electron": "16.1.0", + "electron-log": "4.4.6", + "electron-store": "8.0.1", + "electron-updater": "5.0.0" + }, + "devDependencies": { + "@types/node": "^16.11.12", + "rimraf": "^3.0.2", + "typescript": "4.3.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/animations": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.16.tgz", + "integrity": "sha512-Kf6C7Ta+fCMq5DvT9JNVhBkcECrqFa3wumiC6ssGo5sNaEzXz+tlep9ZgEbqfxSn7gAN7L1DgsbS9u0O6tbUkg==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/core": "12.2.16" + } + }, + "node_modules/@angular/cdk": { + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz", + "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==", + "dependencies": { + "tslib": "^2.2.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^12.0.0 || ^13.0.0-0", + "@angular/core": "^12.0.0 || ^13.0.0-0", + "rxjs": "^6.5.3 || ^7.0.0" + } + }, + "node_modules/@angular/common": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.16.tgz", + "integrity": "sha512-FEqTXTEsnbDInqV1yFlm97Tz1OFqZS5t0TUkm8gzXRgpIce/F/jLwAg0u1VQkgOsno6cNm0xTWPoZgu85NI4ug==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/core": "12.2.16", + "rxjs": "^6.5.3 || ^7.0.0" + } + }, + "node_modules/@angular/compiler": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.16.tgz", + "integrity": "sha512-nsYEw+yu8QyeqPf9nAmG419i1mtGM4v8+U+S3eQHQFXTgJzLymMykWHYu2ETdjUpNSLK6xcIQDBWtWnWSfJjAA==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + } + }, + "node_modules/@angular/compiler-cli": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.16.tgz", + "integrity": "sha512-tlalh8SJvdCWbUPRUR5GamaP+wSc/GuCsoUZpSbcczGKgSlbaEVXUYtVXm8/wuT6Slk2sSEbRs7tXGF2i7qxVw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.6", + "@babel/types": "^7.8.6", + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.2.0", + "yargs": "^17.0.0" + }, + "bin": { + "ivy-ngcc": "ngcc/main-ivy-ngcc.js", + "ng-xi18n": "src/extract_i18n.js", + "ngc": "src/main.js", + "ngcc": "ngcc/main-ngcc.js" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/compiler": "12.2.16", + "typescript": ">=4.2.3 <4.4" + } + }, + "node_modules/@angular/core": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.16.tgz", + "integrity": "sha512-jsmvaRdAfng99z2a9mAmkfcsCE1wm+tBYVDxnc5JquSXznwtncjzcoc2X0J0dzrkCDvzFfpTsZ9vehylytBc+A==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.0.0", + "zone.js": "~0.11.4" + } + }, + "node_modules/@angular/forms": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.16.tgz", + "integrity": "sha512-sb+gpNun5aN7CZfHXS6X7vJcd/0A1P/gRBZpYtQTzBYnqEFCOFIvR62eb05aHQ4JhgKaSPpIXrbz/bAwY/njZw==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/common": "12.2.16", + "@angular/core": "12.2.16", + "@angular/platform-browser": "12.2.16", + "rxjs": "^6.5.3 || ^7.0.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.16.tgz", + "integrity": "sha512-T855ppLeQO6hRHi7lGf5fwPoUVt+c0h2rgkV5jHElc3ylaGnhecmZc6fnWLX4pw82TMJUgUV88CY8JCFabJWwg==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/animations": "12.2.16", + "@angular/common": "12.2.16", + "@angular/core": "12.2.16" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.16.tgz", + "integrity": "sha512-XGxoACAMW/bc3atiVRpaiYwU4LkobYwVzwlxTT/BxOfsdt8ILb5wU8Fx1TMKNECOQHSGdK0qqhch4pTBZ3cb2g==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/common": "12.2.16", + "@angular/compiler": "12.2.16", + "@angular/core": "12.2.16", + "@angular/platform-browser": "12.2.16" + } + }, + "node_modules/@angular/router": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.16.tgz", + "integrity": "sha512-LuFXSMIvX/VrB4jbYhigG2Y2pGQ9ULsSBUwDWwQCf4kr0eVI37LBJ2Vr74GBEznjgQ0UmWE89E+XYI80UhERTw==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, + "peerDependencies": { + "@angular/common": "12.2.16", + "@angular/core": "12.2.16", + "@angular/platform-browser": "12.2.16", + "rxjs": "^6.5.3 || ^7.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bitwarden/jslib-angular": { + "resolved": "jslib/angular", + "link": true + }, + "node_modules/@bitwarden/jslib-common": { + "resolved": "jslib/common", + "link": true + }, + "node_modules/@bitwarden/jslib-electron": { + "resolved": "jslib/electron", + "link": true + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=8.6" + }, + "optionalDependencies": { + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1" + } + }, + "node_modules/@electron/get/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@electron/get/node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@electron/get/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/get/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@electron/get/node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/get/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/get/node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@electron/get/node_modules/got/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@electron/get/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/get/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/@electron/get/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/get/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@electron/get/node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/@electron/get/node_modules/responselike/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/universal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", + "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/signalr": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-5.0.10.tgz", + "integrity": "sha512-7jg6s/cmULyeVvt5/bTB4N9T30HvAF1S06hL+nPcQMODXcclRo34Zcli/dfTLR8lCX31/cVEOmVgxXBOVRQ+Dw==", + "dependencies": { + "abort-controller": "^3.0.0", + "eventsource": "^1.0.7", + "fetch-cookie": "^0.7.3", + "node-fetch": "^2.6.0", + "ws": "^6.0.0" + } + }, + "node_modules/@microsoft/signalr-protocol-msgpack": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/signalr-protocol-msgpack/-/signalr-protocol-msgpack-5.0.10.tgz", + "integrity": "sha512-HqZiNLyjYP1ONeLgYUjFBUsnhxSp5CW4AW8InsLI7lyAXZl2drUhkiBxf3xK9UsTErO1+9r5sdaYdSmUY8nx9A==", + "dependencies": { + "@microsoft/signalr": ">=5.0.10", + "msgpack5": "^4.5.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz", + "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==", + "dev": true, + "engines": { + "node": "^12.14.1 || >=14.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^12.0.0", + "typescript": "~4.2.3 || ~4.3.2", + "webpack": "^5.30.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodert-win10-rs4/windows.security.credentials.ui": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@nodert-win10-rs4/windows.security.credentials.ui/-/windows.security.credentials.ui-0.4.4.tgz", + "integrity": "sha512-P+EsJw5MCQXTxp7mwXfNDvIzIYsB6ple+HNg01QjPWg/PJfAodPuxL6XM7l0sPtYHsDYnfnvoefZMdZRa2Z1ig==", + "hasInstallScript": true, + "dependencies": { + "nan": "latest" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/duo_web_sdk": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/duo_web_sdk/-/duo_web_sdk-2.7.1.tgz", + "integrity": "sha512-DePanZjFww36yGSxXwC8B3AsjrrDuPxEcufeh4gTqVsUMpCYByxjX4PERiYZdW0typzKSt9E4I14PPp+PrSIQA==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lunr": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz", + "integrity": "sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==", + "dev": true + }, + "node_modules/@types/node-forge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.1.tgz", + "integrity": "sha512-96ELNKv9tQJ19afdBUiM5iDw7OYEc53iUc51gAPR2aGaqRsO1DBROjqgZRjZa1tkPj7TnEOR0EnyAX6iryGkzA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node-ipc": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@types/node-ipc/-/node-ipc-9.2.0.tgz", + "integrity": "sha512-0v1oucUgINvWPhknecSBE5xkz74sVgeZgiL/LkWXNTSzFaGspEToA4oR56hjza0Jkk6DsS2EiNU3M2R2KQza9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-BNbCHJkTE4RwmAFkCxEalET4mDvGr/1ld7ZtQ4i/laWI/iiVt+GL07stdvufle4KfywyvloqqpIiJscXNCrKxA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", + "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + }, + "node_modules/@types/tldjs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/tldjs/-/tldjs-2.3.1.tgz", + "integrity": "sha512-BQR04zLE0ve2eNrqxXw/Qp/f6LxvNrj/4A8ZgdQi3SzbBqxFhleI7N4DS/mSjDnODrUaEGgoWg4grAZR1kVj8w==", + "dev": true + }, + "node_modules/@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "dev": true, + "optional": true + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/zxcvbn": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.1.tgz", + "integrity": "sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", + "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/type-utils": "5.18.0", + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", + "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", + "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", + "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", + "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", + "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", + "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", + "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-builder-bin": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.13.tgz", + "integrity": "sha512-ighVe9G+bT1ENGdp9ecO1P+94vv/f+FUwaI+XkNzeg9bYF8Oi3BQ+mJuxS00UgyHs8luuOzjzC+qnAtdb43Mpg==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.11.7.tgz", + "integrity": "sha512-pS9/cR4/TnNZVAHZECiSvvwTBzbwblj7KBBZkMKDG57nibq0I1XY8zAaYeHFdlYTyrRcz9JUXbAqJKezya7UFQ==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-publish": "22.11.7", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.0.4", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "dev": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "optional": true + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-hrtime": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/browser-hrtime/-/browser-hrtime-1.1.8.tgz", + "integrity": "sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==" + }, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builder-util": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.11.7.tgz", + "integrity": "sha512-ihqUe5ey82LM9qqQe0/oIcaSm9w+B9UjcsWJZxJliTBsbU+sErOpDFpHW+sim0veiTF/EIcGUh9HoduWw+l9FA==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.5.13", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/builder-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/builder-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/builder-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/builder-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/builder-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001327", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", + "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compress-brotli": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.6.tgz", + "integrity": "sha512-au99/GqZtUtiCBliqLFbWlhnCxn+XSYjwZ77q6mKN4La4qOXDoLVPZ50iXr0WmAyMxl8yqoq3Yq4OeQNPPkyeQ==", + "dev": true, + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conf": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", + "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==", + "dependencies": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conf/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/conf/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conf/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "optional": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "dev": true, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "dependencies": { + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debounce-fn/node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "devOptional": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "optional": true + }, + "node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" + } + }, + "node_modules/dir-compare/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dmg-builder": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.11.7.tgz", + "integrity": "sha512-+I+XfP2DODHB6PwFANgpH/WMzzCA5r5XoMvbFCIYjQjJpXlO0XnqQaamzFl2vh/Wz/Qt0d0lJMgRy8gKR3MGdQ==", + "dev": true, + "dependencies": { + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.6", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.9" + } + }, + "node_modules/dmg-builder/node_modules/builder-util-runtime": { + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.6.tgz", + "integrity": "sha512-rj9AIY7CzLSuTOXpToiaQkruYh6UEQ+kYnd5UET22ch8MGClEtIZKXHG14qEiXEr2x4EOKDMxkcTa+9TYaE+ug==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "deprecated": "Disk image license agreements are deprecated by Apple and will probably be removed in a future macOS release. Discussion at: https://github.com/argv-minus-one/dmg-license/issues/11", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duo_web_sdk": { + "version": "2.7.0", + "resolved": "git+ssh://git@github.com/duosecurity/duo_web_sdk.git#378e855ce4a1de1d1b2f7fd60465e564b3e9fbda", + "license": "SEE LICENSE IN LICENSE" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ejs": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", + "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.1.0.tgz", + "integrity": "sha512-G4fpHmE3sgd497e0zEier/AmZ4fyReX8ozYAl468+FaI5kb44+69igRHQwRUtmPzv+fCn/Jm4wJQPfLe60WmUQ==", + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^1.13.0", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 8.6" + } + }, + "node_modules/electron-builder": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.11.7.tgz", + "integrity": "sha512-yQExSLt7Hbz/P8lLkZDdE/OnJJ7NCX+uiQcV+XIH0TeEZcD87ZnSqBBzGUN5akySU4BXXlrVZKeUsXACWrm5Kw==", + "dev": true, + "dependencies": { + "@types/yargs": "^16.0.2", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "dmg-builder": "22.11.7", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/electron-builder/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/electron-builder/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/electron-builder/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/electron-builder/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-builder/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-log": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.6.tgz", + "integrity": "sha512-nirYgRdY+F+vclr8ijdwy2vW03IzFpDHTaKNWu76dEN21Y76+smcES5knS7cgHUUB0qNLOi8vZO36taakjbSXA==" + }, + "node_modules/electron-notarize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.2.1.tgz", + "integrity": "sha512-u/ECWhIrhkSQpZM4cJzVZ5TsmkaqrRo5LDC/KMbGF0sPkm53Ng59+M0zp8QVaql0obfJy9vlVT+4iOkAi2UDlA==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-publish": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.11.7.tgz", + "integrity": "sha512-A4EhRRNBVz4SPzUlBrPO6BmuyDeI0pyprggPAV9rQ+SDVSnSB/WKPot9JwWMyArkGj3AUUTMNVT6hwZhMvhfqw==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/electron-publish/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/electron-publish/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/electron-publish/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/electron-publish/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-publish/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-3.2.7.tgz", + "integrity": "sha512-WvaW1EgRinDQ61khHFZfx30rkPQG5ItaOT0wrI7iJv9A3SbghriQGfZQfHZs25fWLBe6/vkv05LOqg6aDw6Wzw==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^1.0.3", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "lzma-native": "^8.0.5", + "node-abi": "^3.0.0", + "node-api-version": "^0.1.4", + "node-gyp": "^8.4.0", + "ora": "^5.1.0", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/src/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/electron-rebuild/node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/electron-rebuild/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/electron-rebuild/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/electron-rebuild/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/electron-rebuild/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/electron-rebuild/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-reload": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/electron-reload/-/electron-reload-1.5.0.tgz", + "integrity": "sha512-L9X6LzsL3Bt2j0eJ4/MBrI9Vt902KvVUtBB7J4qrL1A9sXqC2fE0lpvUAlOThpJYh6zWO1l86U/YiEN9bDURHw==", + "dev": true, + "dependencies": { + "chokidar": "^3.0.2" + } + }, + "node_modules/electron-store": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.0.1.tgz", + "integrity": "sha512-ZyLvNywiqSpbwC/pp89O/AycVWY/UJIkmtyzF2Bd0Nm/rLmcFc0NTGuLdg6+LE8mS8qsiK5JMoe4PnrecLHH5w==", + "dependencies": { + "conf": "^10.0.3", + "type-fest": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-store/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.106", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", + "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "dev": true + }, + "node_modules/electron-updater": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.0.0.tgz", + "integrity": "sha512-SC3sw92ewjrJFZIJamVOHqxW3yzFin/Q/Swf2FZodqm9xd4s8hCbPCfptpD/xBIcvQmAv2BAggbprwWq/fyp6w==", + "dependencies": { + "@types/semver": "^7.3.6", + "builder-util-runtime": "9.0.0", + "fs-extra": "^10.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.5" + } + }, + "node_modules/electron-updater/node_modules/builder-util-runtime": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz", + "integrity": "sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA==", + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/electron/node_modules/@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enhanced-resolve/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", + "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-cookie": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.3.tgz", + "integrity": "sha512-rZPkLnI8x5V+zYAiz8QonAHsTb4BY+iFowFBI1RFn0zrO343AVp9X7/yUj/9wL6Ef/8fLls8b/vGtzUvmyAUGA==", + "dependencies": { + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.3" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filelist": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", + "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/forcefocus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/forcefocus/-/forcefocus-1.1.0.tgz", + "integrity": "sha512-bnY7rul5kBLyNoCn0FHNiFAF+GGUZx6TvxWhurUS4PlmOzF+FMixGIigHH5UcyM3w1gp2TxAtP6MOUSXA15Sgw==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0", + "prebuild-install": "^5.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "dependencies": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "optional": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "11.8.3", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", + "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-3.1.0.tgz", + "integrity": "sha512-ycMYFRiCF7YANcLDNP72kh3Po5pTcH+bROzdDwh00iVOAY/BwvpuZ1BKPziQ35Dk9D+UD84VGX1Lu/H4HpO4fw==", + "dev": true, + "dependencies": { + "html-minifier-terser": "^6.0.2", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/html-loader/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/if-async": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/if-async/-/if-async-3.7.4.tgz", + "integrity": "sha1-VYaN6wCT08Z79xZudFNT+5vLIaI=" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally/node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dependencies": { + "easy-stack": "^1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/keytar/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keytar/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/keytar/node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/keytar/node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/keytar/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/keytar/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keytar/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node_modules/keytar/node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/keytar/node_modules/prebuild-install": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz", + "integrity": "sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keytar/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/keytar/node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/keytar/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/keytar/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keytar/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keyv": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.2.tgz", + "integrity": "sha512-uYS0vKTlBIjNCAUqrjlxmruxOEiZxZIHXyp32sdcGmP+ukFrmWUnE//RcPXJH3Vxrni1H2gsQbjHE0bH7MtMQQ==", + "dev": true, + "dependencies": { + "compress-brotli": "^1.3.6", + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lint-staged": { + "version": "12.3.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz", + "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^4.0.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.0", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/lint-staged/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/lint-staged/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/supports-color": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "node_modules/lzma-native": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-8.0.6.tgz", + "integrity": "sha512-09xfg67mkL2Lz20PrrDeNYZxzeW7ADtpYFbwSQh9U8+76RIzx5QsJBMy8qikv3hbUPfpy6hqwxt6FcGK81g9AA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.1.0", + "node-gyp-build": "^4.2.1", + "readable-stream": "^3.6.0" + }, + "bin": { + "lzmajs": "bin/lzmajs" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/lzma-native/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/msgpack5": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-4.5.1.tgz", + "integrity": "sha512-zC1vkcliryc4JGlL6OfpHumSYUHWFGimSI+OgfRCjTFLmKA2/foR9rMTOhWiqfOrfxJOctrpWPvrppf8XynJxw==", + "dependencies": { + "bl": "^2.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.3.6", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/msgpack5/node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/msgpack5/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/msgpack5/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + }, + "node_modules/nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/ngx-toastr": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-14.1.4.tgz", + "integrity": "sha512-t1/9r+pOXm65LIl0gevvFat6XIl0g3tMA8UOArFjI4ta/nGwDe/14J/f4cZvOBDcomedvjvGAWi+d/2URdSTBg==", + "dependencies": { + "tslib": "^2.2.0" + }, + "peerDependencies": { + "@angular/common": ">=12.0.0-0", + "@angular/core": ">=12.0.0-0", + "@angular/platform-browser": ">=12.0.0-0" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abi": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", + "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node_modules/node-api-version": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", + "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dependencies": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/node-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", + "integrity": "sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "node_modules/noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nord": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nord/-/nord-0.2.1.tgz", + "integrity": "sha1-BE7Y4AMxyEqW3ExnDwgKclcsPPk=" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json/node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/package-json/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/package-json/node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/got/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/package-json/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/package-json/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/package-json/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/package-json/node_modules/responselike/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", + "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "dev": true, + "optional": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true, + "optional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prebuild-install/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prebuild-install/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/prebuild-install/node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/prebuild-install/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/prebuild-install/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prebuild-install/node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/prebuild-install/node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/prebuild-install/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/prebuild-install/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/prebuild-install/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/prebuild-install/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prebuild-install/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "dependencies": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regedit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/regedit/-/regedit-3.0.3.tgz", + "integrity": "sha512-SpHmMKOtiEYx0MiRRC48apBsmThoZ4svZNsYoK8leHd5bdUHV1nYb8pk8gh6Moou7/S9EDi1QsjBTpyXVQrPuQ==", + "dependencies": { + "debug": "^4.1.0", + "if-async": "^3.7.4", + "stream-slicer": "0.0.6", + "through2": "^0.6.3" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sass": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", + "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", + "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "dependencies": { + "lru-cache": "^7.4.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", + "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-get/node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/simple-get/node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-slicer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", + "integrity": "sha1-+GsqxcJEC3oKh7cfM2ZcB4gEYTg=" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sweetalert2": { + "version": "10.16.9", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.16.9.tgz", + "integrity": "sha512-oNe+md5tmmS3fGfVHa7gVPlun7Td2oANSacnZCeghnrr3OHBi6UPVPU+GFrymwaDqwQspACilLRmRnM7aTjNPA==", + "funding": { + "url": "https://sweetalert2.github.io/#donations" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/tldjs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tldjs/-/tldjs-2.3.1.tgz", + "integrity": "sha512-W/YVH/QczLUxVjnQhFC61Iq232NWu3TqDdO0S/MtXVz4xybejBov4ud+CIwN9aYqjOecEqIy0PscGkwpG9ZyTw==", + "hasInstallScript": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/tldjs/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-loader": { + "version": "9.2.8", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.8.tgz", + "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", + "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^3.9.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/update-notifier/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/webpack": { + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/zxcvbn": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", + "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@angular/animations": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.16.tgz", + "integrity": "sha512-Kf6C7Ta+fCMq5DvT9JNVhBkcECrqFa3wumiC6ssGo5sNaEzXz+tlep9ZgEbqfxSn7gAN7L1DgsbS9u0O6tbUkg==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/cdk": { + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz", + "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.2.0" + } + }, + "@angular/common": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.16.tgz", + "integrity": "sha512-FEqTXTEsnbDInqV1yFlm97Tz1OFqZS5t0TUkm8gzXRgpIce/F/jLwAg0u1VQkgOsno6cNm0xTWPoZgu85NI4ug==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/compiler": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.16.tgz", + "integrity": "sha512-nsYEw+yu8QyeqPf9nAmG419i1mtGM4v8+U+S3eQHQFXTgJzLymMykWHYu2ETdjUpNSLK6xcIQDBWtWnWSfJjAA==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/compiler-cli": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.16.tgz", + "integrity": "sha512-tlalh8SJvdCWbUPRUR5GamaP+wSc/GuCsoUZpSbcczGKgSlbaEVXUYtVXm8/wuT6Slk2sSEbRs7tXGF2i7qxVw==", + "dev": true, + "requires": { + "@babel/core": "^7.8.6", + "@babel/types": "^7.8.6", + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.2.0", + "yargs": "^17.0.0" + } + }, + "@angular/core": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.16.tgz", + "integrity": "sha512-jsmvaRdAfng99z2a9mAmkfcsCE1wm+tBYVDxnc5JquSXznwtncjzcoc2X0J0dzrkCDvzFfpTsZ9vehylytBc+A==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/forms": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.16.tgz", + "integrity": "sha512-sb+gpNun5aN7CZfHXS6X7vJcd/0A1P/gRBZpYtQTzBYnqEFCOFIvR62eb05aHQ4JhgKaSPpIXrbz/bAwY/njZw==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/platform-browser": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.16.tgz", + "integrity": "sha512-T855ppLeQO6hRHi7lGf5fwPoUVt+c0h2rgkV5jHElc3ylaGnhecmZc6fnWLX4pw82TMJUgUV88CY8JCFabJWwg==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.16.tgz", + "integrity": "sha512-XGxoACAMW/bc3atiVRpaiYwU4LkobYwVzwlxTT/BxOfsdt8ILb5wU8Fx1TMKNECOQHSGdK0qqhch4pTBZ3cb2g==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/router": { + "version": "12.2.16", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.16.tgz", + "integrity": "sha512-LuFXSMIvX/VrB4jbYhigG2Y2pGQ9ULsSBUwDWwQCf4kr0eVI37LBJ2Vr74GBEznjgQ0UmWE89E+XYI80UhERTw==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bitwarden/jslib-angular": { + "version": "file:jslib/angular", + "requires": { + "@angular/animations": "^12.2.13", + "@angular/cdk": "^12.2.13", + "@angular/common": "^12.2.13", + "@angular/compiler": "^12.2.13", + "@angular/core": "^12.2.13", + "@angular/forms": "^12.2.13", + "@angular/platform-browser": "^12.2.13", + "@angular/platform-browser-dynamic": "^12.2.13", + "@angular/router": "^12.2.13", + "@bitwarden/jslib-common": "file:../common", + "@types/duo_web_sdk": "^2.7.1", + "duo_web_sdk": "git+https://github.com/duosecurity/duo_web_sdk.git", + "rimraf": "^3.0.2", + "rxjs": "^7.4.0", + "tldjs": "^2.3.1", + "typescript": "4.3.5", + "zone.js": "0.11.4" + } + }, + "@bitwarden/jslib-common": { + "version": "file:jslib/common", + "requires": { + "@microsoft/signalr": "5.0.10", + "@microsoft/signalr-protocol-msgpack": "5.0.10", + "@types/lunr": "^2.3.3", + "@types/node": "^16.11.12", + "@types/node-forge": "^1.0.1", + "@types/papaparse": "^5.2.5", + "@types/tldjs": "^2.3.0", + "@types/zxcvbn": "^4.4.1", + "big-integer": "1.6.48", + "browser-hrtime": "^1.1.8", + "lunr": "^2.3.9", + "node-forge": "^1.2.1", + "papaparse": "^5.3.0", + "rimraf": "^3.0.2", + "rxjs": "^7.4.0", + "tldjs": "^2.3.1", + "typescript": "4.3.5", + "zxcvbn": "^4.4.2" + } + }, + "@bitwarden/jslib-electron": { + "version": "file:jslib/electron", + "requires": { + "@bitwarden/jslib-common": "file:../common", + "@types/node": "^16.11.12", + "electron": "16.1.0", + "electron-log": "4.4.6", + "electron-store": "8.0.1", + "electron-updater": "5.0.0", + "rimraf": "^3.0.2", + "typescript": "4.3.5" + } + }, + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + } + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + } + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "@electron/universal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", + "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@microsoft/signalr": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-5.0.10.tgz", + "integrity": "sha512-7jg6s/cmULyeVvt5/bTB4N9T30HvAF1S06hL+nPcQMODXcclRo34Zcli/dfTLR8lCX31/cVEOmVgxXBOVRQ+Dw==", + "requires": { + "abort-controller": "^3.0.0", + "eventsource": "^1.0.7", + "fetch-cookie": "^0.7.3", + "node-fetch": "^2.6.0", + "ws": "^6.0.0" + } + }, + "@microsoft/signalr-protocol-msgpack": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/signalr-protocol-msgpack/-/signalr-protocol-msgpack-5.0.10.tgz", + "integrity": "sha512-HqZiNLyjYP1ONeLgYUjFBUsnhxSp5CW4AW8InsLI7lyAXZl2drUhkiBxf3xK9UsTErO1+9r5sdaYdSmUY8nx9A==", + "requires": { + "@microsoft/signalr": ">=5.0.10", + "msgpack5": "^4.5.0" + } + }, + "@ngtools/webpack": { + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz", + "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==", + "dev": true, + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nodert-win10-rs4/windows.security.credentials.ui": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@nodert-win10-rs4/windows.security.credentials.ui/-/windows.security.credentials.ui-0.4.4.tgz", + "integrity": "sha512-P+EsJw5MCQXTxp7mwXfNDvIzIYsB6ple+HNg01QjPWg/PJfAodPuxL6XM7l0sPtYHsDYnfnvoefZMdZRa2Z1ig==", + "requires": { + "nan": "latest" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/duo_web_sdk": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/duo_web_sdk/-/duo_web_sdk-2.7.1.tgz", + "integrity": "sha512-DePanZjFww36yGSxXwC8B3AsjrrDuPxEcufeh4gTqVsUMpCYByxjX4PERiYZdW0typzKSt9E4I14PPp+PrSIQA==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lunr": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz", + "integrity": "sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/node": { + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==", + "dev": true + }, + "@types/node-forge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.1.tgz", + "integrity": "sha512-96ELNKv9tQJ19afdBUiM5iDw7OYEc53iUc51gAPR2aGaqRsO1DBROjqgZRjZa1tkPj7TnEOR0EnyAX6iryGkzA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node-ipc": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@types/node-ipc/-/node-ipc-9.2.0.tgz", + "integrity": "sha512-0v1oucUgINvWPhknecSBE5xkz74sVgeZgiL/LkWXNTSzFaGspEToA4oR56hjza0Jkk6DsS2EiNU3M2R2KQza9A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-BNbCHJkTE4RwmAFkCxEalET4mDvGr/1ld7ZtQ4i/laWI/iiVt+GL07stdvufle4KfywyvloqqpIiJscXNCrKxA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", + "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + }, + "@types/tldjs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/tldjs/-/tldjs-2.3.1.tgz", + "integrity": "sha512-BQR04zLE0ve2eNrqxXw/Qp/f6LxvNrj/4A8ZgdQi3SzbBqxFhleI7N4DS/mSjDnODrUaEGgoWg4grAZR1kVj8w==", + "dev": true + }, + "@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "dev": true, + "optional": true + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@types/zxcvbn": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.1.tgz", + "integrity": "sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", + "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/type-utils": "5.18.0", + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", + "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", + "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", + "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", + "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", + "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", + "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", + "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.18.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-builder-bin": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.13.tgz", + "integrity": "sha512-ighVe9G+bT1ENGdp9ecO1P+94vv/f+FUwaI+XkNzeg9bYF8Oi3BQ+mJuxS00UgyHs8luuOzjzC+qnAtdb43Mpg==", + "dev": true + }, + "app-builder-lib": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.11.7.tgz", + "integrity": "sha512-pS9/cR4/TnNZVAHZECiSvvwTBzbwblj7KBBZkMKDG57nibq0I1XY8zAaYeHFdlYTyrRcz9JUXbAqJKezya7UFQ==", + "dev": true, + "requires": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-publish": "22.11.7", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.0.4", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "asar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "optional": true + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-hrtime": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/browser-hrtime/-/browser-hrtime-1.1.8.tgz", + "integrity": "sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==" + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "builder-util": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.11.7.tgz", + "integrity": "sha512-ihqUe5ey82LM9qqQe0/oIcaSm9w+B9UjcsWJZxJliTBsbU+sErOpDFpHW+sim0veiTF/EIcGUh9HoduWw+l9FA==", + "dev": true, + "requires": { + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.5.13", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "builder-util-runtime": { + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001327", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", + "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "requires": { + "del": "^4.1.1" + } + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "compress-brotli": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.6.tgz", + "integrity": "sha512-au99/GqZtUtiCBliqLFbWlhnCxn+XSYjwZ77q6mKN4La4qOXDoLVPZ50iXr0WmAyMxl8yqoq3Yq4OeQNPPkyeQ==", + "dev": true, + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "conf": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", + "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==", + "requires": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "requires": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "dev": true + }, + "debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "requires": { + "mimic-fn": "^3.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" + } + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "devOptional": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "optional": true + }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dmg-builder": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.11.7.tgz", + "integrity": "sha512-+I+XfP2DODHB6PwFANgpH/WMzzCA5r5XoMvbFCIYjQjJpXlO0XnqQaamzFl2vh/Wz/Qt0d0lJMgRy8gKR3MGdQ==", + "dev": true, + "requires": { + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.6", + "dmg-license": "^1.0.9", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "builder-util-runtime": { + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.6.tgz", + "integrity": "sha512-rj9AIY7CzLSuTOXpToiaQkruYh6UEQ+kYnd5UET22ch8MGClEtIZKXHG14qEiXEr2x4EOKDMxkcTa+9TYaE+ug==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + } + } + }, + "dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "optional": true, + "requires": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duo_web_sdk": { + "version": "git+ssh://git@github.com/duosecurity/duo_web_sdk.git#378e855ce4a1de1d1b2f7fd60465e564b3e9fbda", + "from": "duo_web_sdk@git+https://github.com/duosecurity/duo_web_sdk.git" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==" + }, + "ejs": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", + "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.1.0.tgz", + "integrity": "sha512-G4fpHmE3sgd497e0zEier/AmZ4fyReX8ozYAl468+FaI5kb44+69igRHQwRUtmPzv+fCn/Jm4wJQPfLe60WmUQ==", + "requires": { + "@electron/get": "^1.13.0", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==" + } + } + }, + "electron-builder": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.11.7.tgz", + "integrity": "sha512-yQExSLt7Hbz/P8lLkZDdE/OnJJ7NCX+uiQcV+XIH0TeEZcD87ZnSqBBzGUN5akySU4BXXlrVZKeUsXACWrm5Kw==", + "dev": true, + "requires": { + "@types/yargs": "^16.0.2", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "dmg-builder": "22.11.7", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "electron-log": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.6.tgz", + "integrity": "sha512-nirYgRdY+F+vclr8ijdwy2vW03IzFpDHTaKNWu76dEN21Y76+smcES5knS7cgHUUB0qNLOi8vZO36taakjbSXA==" + }, + "electron-notarize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.2.1.tgz", + "integrity": "sha512-u/ECWhIrhkSQpZM4cJzVZ5TsmkaqrRo5LDC/KMbGF0sPkm53Ng59+M0zp8QVaql0obfJy9vlVT+4iOkAi2UDlA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "electron-publish": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.11.7.tgz", + "integrity": "sha512-A4EhRRNBVz4SPzUlBrPO6BmuyDeI0pyprggPAV9rQ+SDVSnSB/WKPot9JwWMyArkGj3AUUTMNVT6hwZhMvhfqw==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "electron-rebuild": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-3.2.7.tgz", + "integrity": "sha512-WvaW1EgRinDQ61khHFZfx30rkPQG5ItaOT0wrI7iJv9A3SbghriQGfZQfHZs25fWLBe6/vkv05LOqg6aDw6Wzw==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^1.0.3", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "lzma-native": "^8.0.5", + "node-abi": "^3.0.0", + "node-api-version": "^0.1.4", + "node-gyp": "^8.4.0", + "ora": "^5.1.0", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "dependencies": { + "@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "electron-reload": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/electron-reload/-/electron-reload-1.5.0.tgz", + "integrity": "sha512-L9X6LzsL3Bt2j0eJ4/MBrI9Vt902KvVUtBB7J4qrL1A9sXqC2fE0lpvUAlOThpJYh6zWO1l86U/YiEN9bDURHw==", + "dev": true, + "requires": { + "chokidar": "^3.0.2" + } + }, + "electron-store": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.0.1.tgz", + "integrity": "sha512-ZyLvNywiqSpbwC/pp89O/AycVWY/UJIkmtyzF2Bd0Nm/rLmcFc0NTGuLdg6+LE8mS8qsiK5JMoe4PnrecLHH5w==", + "requires": { + "conf": "^10.0.3", + "type-fest": "^1.0.2" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + } + } + }, + "electron-to-chromium": { + "version": "1.4.106", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", + "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "dev": true + }, + "electron-updater": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.0.0.tgz", + "integrity": "sha512-SC3sw92ewjrJFZIJamVOHqxW3yzFin/Q/Swf2FZodqm9xd4s8hCbPCfptpD/xBIcvQmAv2BAggbprwWq/fyp6w==", + "requires": { + "@types/semver": "^7.3.6", + "builder-util-runtime": "9.0.0", + "fs-extra": "^10.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.5" + }, + "dependencies": { + "builder-util-runtime": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz", + "integrity": "sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA==", + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "dependencies": { + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "es-abstract": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", + "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "requires": { + "original": "^1.0.0" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "optional": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fetch-cookie": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.3.tgz", + "integrity": "sha512-rZPkLnI8x5V+zYAiz8QonAHsTb4BY+iFowFBI1RFn0zrO343AVp9X7/yUj/9wL6Ef/8fLls8b/vGtzUvmyAUGA==", + "requires": { + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.3" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filelist": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", + "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "forcefocus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/forcefocus/-/forcefocus-1.1.0.tgz", + "integrity": "sha512-bnY7rul5kBLyNoCn0FHNiFAF+GGUZx6TvxWhurUS4PlmOzF+FMixGIigHH5UcyM3w1gp2TxAtP6MOUSXA15Sgw==", + "requires": { + "bindings": "^1.3.0", + "prebuild-install": "^5.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + } + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "got": { + "version": "11.8.3", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", + "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-3.1.0.tgz", + "integrity": "sha512-ycMYFRiCF7YANcLDNP72kh3Po5pTcH+bROzdDwh00iVOAY/BwvpuZ1BKPziQ35Dk9D+UD84VGX1Lu/H4HpO4fw==", + "dev": true, + "requires": { + "html-minifier-terser": "^6.0.2", + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "dependencies": { + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "dev": true + }, + "iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "requires": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "if-async": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/if-async/-/if-async-3.7.4.tgz", + "integrity": "sha1-VYaN6wCT08Z79xZudFNT+5vLIaI=" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "dependencies": { + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + } + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==" + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "requires": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "prebuild-install": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz", + "integrity": "sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "keyv": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.2.tgz", + "integrity": "sha512-uYS0vKTlBIjNCAUqrjlxmruxOEiZxZIHXyp32sdcGmP+ukFrmWUnE//RcPXJH3Vxrni1H2gsQbjHE0bH7MtMQQ==", + "dev": true, + "requires": { + "compress-brotli": "^1.3.6", + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "lint-staged": { + "version": "12.3.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz", + "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^4.0.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.0", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "supports-color": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", + "dev": true + } + } + }, + "listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "lzma-native": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-8.0.6.tgz", + "integrity": "sha512-09xfg67mkL2Lz20PrrDeNYZxzeW7ADtpYFbwSQh9U8+76RIzx5QsJBMy8qikv3hbUPfpy6hqwxt6FcGK81g9AA==", + "dev": true, + "requires": { + "node-addon-api": "^3.1.0", + "node-gyp-build": "^4.2.1", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + } + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "msgpack5": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-4.5.1.tgz", + "integrity": "sha512-zC1vkcliryc4JGlL6OfpHumSYUHWFGimSI+OgfRCjTFLmKA2/foR9rMTOhWiqfOrfxJOctrpWPvrppf8XynJxw==", + "requires": { + "bl": "^2.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.3.6", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + }, + "nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "ngx-toastr": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-14.1.4.tgz", + "integrity": "sha512-t1/9r+pOXm65LIl0gevvFat6XIl0g3tMA8UOArFjI4ta/nGwDe/14J/f4cZvOBDcomedvjvGAWi+d/2URdSTBg==", + "requires": { + "tslib": "^2.2.0" + } + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-abi": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", + "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "requires": { + "semver": "^7.3.5" + } + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node-api-version": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", + "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + } + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true + }, + "node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "node-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", + "integrity": "sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0" + } + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "nord": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nord/-/nord-0.2.1.tgz", + "integrity": "sha1-BE7Y4AMxyEqW3ExnDwgKclcsPPk=" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pidtree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", + "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + } + } + }, + "plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true, + "optional": true + } + } + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "requires": { + "semver": "^5.4.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + } + } + }, + "read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "requires": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regedit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/regedit/-/regedit-3.0.3.tgz", + "integrity": "sha512-SpHmMKOtiEYx0MiRRC48apBsmThoZ4svZNsYoK8leHd5bdUHV1nYb8pk8gh6Moou7/S9EDi1QsjBTpyXVQrPuQ==", + "requires": { + "debug": "^4.1.0", + "if-async": "^3.7.4", + "stream-slicer": "0.0.6", + "through2": "^0.6.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sass": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", + "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", + "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "requires": { + "lru-cache": "^7.4.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", + "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==" + } + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "requires": { + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + }, + "dependencies": { + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true + }, + "stream-slicer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", + "integrity": "sha1-+GsqxcJEC3oKh7cfM2ZcB4gEYTg=" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "requires": { + "debug": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "sweetalert2": { + "version": "10.16.9", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.16.9.tgz", + "integrity": "sha512-oNe+md5tmmS3fGfVHa7gVPlun7Td2oANSacnZCeghnrr3OHBi6UPVPU+GFrymwaDqwQspACilLRmRnM7aTjNPA==" + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "requires": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "tldjs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tldjs/-/tldjs-2.3.1.tgz", + "integrity": "sha512-W/YVH/QczLUxVjnQhFC61Iq232NWu3TqDdO0S/MtXVz4xybejBov4ud+CIwN9aYqjOecEqIy0PscGkwpG9ZyTw==", + "requires": { + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "requires": { + "tmp": "^0.2.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "ts-loader": { + "version": "9.2.8", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.8.tgz", + "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", + "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "webpack": { + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==" + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "optional": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "zxcvbn": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", + "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" + } + } +} diff --git a/apps/desktop/package.json b/apps/desktop/package.json new file mode 100644 index 0000000000..98506d6705 --- /dev/null +++ b/apps/desktop/package.json @@ -0,0 +1,136 @@ +{ + "name": "@bitwarden/desktop", + "description": "A secure and free password manager for all of your devices.", + "version": "0.0.0", + "keywords": [ + "bitwarden", + "password", + "vault", + "password manager" + ], + "author": "Bitwarden Inc. (https://bitwarden.com)", + "homepage": "https://bitwarden.com", + "repository": { + "type": "git", + "url": "https://github.com/bitwarden/desktop" + }, + "license": "GPL-3.0", + "scripts": { + "start": "cross-env ELECTRON_IS_DEV=0 ELECTRON_NO_UPDATER=1 electron ./build", + "sub:init": "git submodule update --init --recursive", + "sub:update": "git submodule update --remote", + "sub:pull": "git submodule foreach git pull origin master", + "sub:commit": "npm run sub:pull && git commit -am \"update submodule\"", + "preinstall": "npm run sub:init", + "postinstall": "electron-rebuild", + "symlink:win": "rm -rf ./jslib && cmd /c mklink /J .\\jslib ..\\jslib", + "symlink:mac": "npm run symlink:lin", + "symlink:lin": "rm -rf ./jslib && ln -s ../jslib ./jslib", + "lint": "eslint . && prettier --check .", + "lint:fix": "eslint . --fix", + "build": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\"", + "build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"", + "build:main": "cross-env NODE_ENV=production webpack --config webpack.main.js", + "build:main:dev": "cross-env NODE_ENV=development webpack --config webpack.main.js", + "build:renderer": "cross-env NODE_ENV=production webpack --config webpack.renderer.js", + "build:renderer:dev": "cross-env NODE_ENV=development webpack --config webpack.renderer.js", + "build:renderer:watch": "cross-env NODE_ENV=development webpack --config webpack.renderer.js --watch", + "electron": "npm run build:main:dev && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 ./build --watch\" \"npm run build:renderer:watch\"", + "electron:ignore": "npm run build:main:dev && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 --ignore-certificate-errors ./build --watch\" \"npm run build:renderer:watch\"", + "clean:dist": "rimraf ./dist/*", + "clean:l10n": "git push origin --delete l10n_master", + "pack:dir": "npm run clean:dist && electron-builder --dir -p never", + "pack:lin": "npm run clean:dist && electron-builder --linux --x64 -p never", + "pack:mac": "npm run clean:dist && electron-builder --mac --universal -p never", + "pack:mac:arm64": "npm run clean:dist && electron-builder --mac --arm64 -p never", + "pack:mac:mas": "npm run clean:dist && electron-builder --mac mas --universal -p never", + "pack:mac:masdev": "npm run clean:dist && electron-builder --mac mas-dev --universal -p never", + "pack:win": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never -c.win.certificateSubjectName=\"8bit Solutions LLC\"", + "pack:win:ci": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never", + "dist:dir": "npm run build && npm run pack:dir", + "dist:lin": "npm run build && npm run pack:lin", + "dist:mac": "npm run build && npm run pack:mac", + "dist:mac:mas": "npm run build && npm run pack:mac:mas", + "dist:mac:masdev": "npm run build && npm run pack:mac:masdev", + "dist:win": "npm run build && npm run pack:win", + "dist:win:ci": "npm run build && npm run pack:win:ci", + "publish:lin": "npm run build && npm run clean:dist && electron-builder --linux --x64 -p always", + "publish:mac": "npm run build && npm run clean:dist && electron-builder --mac -p always", + "publish:mac:mas": "npm run dist:mac:mas && npm run upload:mas", + "publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"", + "publish:win:dev": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always", + "upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD", + "prettier": "prettier --write .", + "prepare": "husky install" + }, + "devDependencies": { + "@angular/compiler-cli": "^12.2.13", + "@ngtools/webpack": "^12.2.13", + "@types/node": "^16.11.12", + "@types/node-ipc": "^9.1.4", + "@typescript-eslint/eslint-plugin": "^5.12.1", + "@typescript-eslint/parser": "^5.12.1", + "clean-webpack-plugin": "^4.0.0", + "concurrently": "^6.0.2", + "copy-webpack-plugin": "^10.0.0", + "cross-env": "^7.0.3", + "css-loader": "^6.5.1", + "electron-builder": "22.11.7", + "electron-notarize": "^1.1.1", + "electron-rebuild": "^3.2.5", + "electron-reload": "^1.5.0", + "eslint": "^8.9.0", + "eslint-config-prettier": "^8.4.0", + "eslint-import-resolver-typescript": "^2.5.0", + "eslint-plugin-import": "^2.25.4", + "html-loader": "^3.0.1", + "html-webpack-plugin": "^5.5.0", + "husky": "^7.0.4", + "lint-staged": "^12.1.3", + "mini-css-extract-plugin": "^2.4.5", + "node-loader": "^2.0.0", + "prettier": "^2.5.1", + "rimraf": "^3.0.2", + "sass": "^1.32.11", + "sass-loader": "^12.4.0", + "tapable": "^1.1.3", + "ts-loader": "^9.2.5", + "tsconfig-paths-webpack-plugin": "^3.5.1", + "typescript": "4.3.5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1", + "webpack-merge": "^5.8.0" + }, + "dependencies": { + "@angular/animations": "^12.2.13", + "@angular/cdk": "^12.2.13", + "@angular/common": "^12.2.13", + "@angular/compiler": "^12.2.13", + "@angular/core": "^12.2.13", + "@angular/forms": "^12.2.13", + "@angular/platform-browser": "^12.2.13", + "@angular/platform-browser-dynamic": "^12.2.13", + "@angular/router": "^12.2.13", + "@bitwarden/jslib-angular": "file:jslib/angular", + "@bitwarden/jslib-common": "file:jslib/common", + "@bitwarden/jslib-electron": "file:jslib/electron", + "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", + "forcefocus": "^1.1.0", + "keytar": "^7.9.0", + "ngx-toastr": "14.1.4", + "node-ipc": "^9.1.4", + "nord": "^0.2.1", + "regedit": "^3.0.3", + "rxjs": "^7.4.0", + "sweetalert2": "^10.16.6", + "zone.js": "0.11.4" + }, + "engines": { + "node": "~16", + "npm": "~8" + }, + "lint-staged": { + "./!(jslib)**": "prettier --ignore-unknown --write", + "*.ts": "eslint --fix" + } +} diff --git a/apps/desktop/resources/appx/BadgeLogo.png b/apps/desktop/resources/appx/BadgeLogo.png new file mode 100644 index 0000000000..f4043de9a2 Binary files /dev/null and b/apps/desktop/resources/appx/BadgeLogo.png differ diff --git a/apps/desktop/resources/appx/SplashScreen.png b/apps/desktop/resources/appx/SplashScreen.png new file mode 100644 index 0000000000..ae593f8116 Binary files /dev/null and b/apps/desktop/resources/appx/SplashScreen.png differ diff --git a/apps/desktop/resources/appx/Square150x150Logo.png b/apps/desktop/resources/appx/Square150x150Logo.png new file mode 100644 index 0000000000..912f49b923 Binary files /dev/null and b/apps/desktop/resources/appx/Square150x150Logo.png differ diff --git a/apps/desktop/resources/appx/Square44x44Logo.png b/apps/desktop/resources/appx/Square44x44Logo.png new file mode 100644 index 0000000000..99d45c500e Binary files /dev/null and b/apps/desktop/resources/appx/Square44x44Logo.png differ diff --git a/apps/desktop/resources/appx/StoreLogo.png b/apps/desktop/resources/appx/StoreLogo.png new file mode 100644 index 0000000000..7a111642a1 Binary files /dev/null and b/apps/desktop/resources/appx/StoreLogo.png differ diff --git a/apps/desktop/resources/appx/Wide310x150Logo.png b/apps/desktop/resources/appx/Wide310x150Logo.png new file mode 100644 index 0000000000..cab6b888a2 Binary files /dev/null and b/apps/desktop/resources/appx/Wide310x150Logo.png differ diff --git a/apps/desktop/resources/background.png b/apps/desktop/resources/background.png new file mode 100644 index 0000000000..0cbe160e60 Binary files /dev/null and b/apps/desktop/resources/background.png differ diff --git a/apps/desktop/resources/dmg.icns b/apps/desktop/resources/dmg.icns new file mode 100644 index 0000000000..936ae4cd38 Binary files /dev/null and b/apps/desktop/resources/dmg.icns differ diff --git a/apps/desktop/resources/dmg.iconset/icon_128x128.png b/apps/desktop/resources/dmg.iconset/icon_128x128.png new file mode 100644 index 0000000000..032e3a7bdb Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_128x128.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_128x128@2x.png b/apps/desktop/resources/dmg.iconset/icon_128x128@2x.png new file mode 100644 index 0000000000..23b4d2447d Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_128x128@2x.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_16x16.png b/apps/desktop/resources/dmg.iconset/icon_16x16.png new file mode 100644 index 0000000000..c2d9f33f73 Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_16x16.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_16x16@2x.png b/apps/desktop/resources/dmg.iconset/icon_16x16@2x.png new file mode 100644 index 0000000000..9bcd22b6b3 Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_16x16@2x.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_256x256.png b/apps/desktop/resources/dmg.iconset/icon_256x256.png new file mode 100644 index 0000000000..b52a826526 Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_256x256.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_256x256@2x.png b/apps/desktop/resources/dmg.iconset/icon_256x256@2x.png new file mode 100644 index 0000000000..3f89a1aa2e Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_256x256@2x.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_32x32.png b/apps/desktop/resources/dmg.iconset/icon_32x32.png new file mode 100644 index 0000000000..6f91f5a38b Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_32x32.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_32x32@2x.png b/apps/desktop/resources/dmg.iconset/icon_32x32@2x.png new file mode 100644 index 0000000000..3d4aa29ee4 Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_32x32@2x.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_512x512.png b/apps/desktop/resources/dmg.iconset/icon_512x512.png new file mode 100644 index 0000000000..51ebc7bed8 Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_512x512.png differ diff --git a/apps/desktop/resources/dmg.iconset/icon_512x512@2x.png b/apps/desktop/resources/dmg.iconset/icon_512x512@2x.png new file mode 100644 index 0000000000..0d6635c229 Binary files /dev/null and b/apps/desktop/resources/dmg.iconset/icon_512x512@2x.png differ diff --git a/apps/desktop/resources/entitlements.mac.plist b/apps/desktop/resources/entitlements.mac.plist new file mode 100644 index 0000000000..48f7bf5cec --- /dev/null +++ b/apps/desktop/resources/entitlements.mac.plist @@ -0,0 +1,12 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.disable-library-validation + + + diff --git a/apps/desktop/resources/entitlements.mas.inherit.plist b/apps/desktop/resources/entitlements.mas.inherit.plist new file mode 100644 index 0000000000..3ee76423e4 --- /dev/null +++ b/apps/desktop/resources/entitlements.mas.inherit.plist @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.inherit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.disable-library-validation + + + diff --git a/apps/desktop/resources/entitlements.mas.plist b/apps/desktop/resources/entitlements.mas.plist new file mode 100644 index 0000000000..d9f74a1b0a --- /dev/null +++ b/apps/desktop/resources/entitlements.mas.plist @@ -0,0 +1,26 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.files.user-selected.read-write + + com.apple.security.temporary-exception.files.home-relative-path.read-write + + /Library/Application Support/Mozilla/NativeMessagingHosts/ + /Library/Application Support/Google/Chrome/NativeMessagingHosts/ + /Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/ + /Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/ + /Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/ + /Library/Application Support/Chromium/NativeMessagingHosts/ + /Library/Application Support/Microsoft Edge/NativeMessagingHosts/ + /Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/ + /Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/ + /Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/ + /Library/Application Support/Vivaldi/NativeMessagingHosts/ + + + diff --git a/apps/desktop/resources/icon.icns b/apps/desktop/resources/icon.icns new file mode 100644 index 0000000000..56a9c2e5e1 Binary files /dev/null and b/apps/desktop/resources/icon.icns differ diff --git a/apps/desktop/resources/icon.ico b/apps/desktop/resources/icon.ico new file mode 100644 index 0000000000..b5d2ff46cf Binary files /dev/null and b/apps/desktop/resources/icon.ico differ diff --git a/apps/desktop/resources/icon.iconset/icon_128x128.png b/apps/desktop/resources/icon.iconset/icon_128x128.png new file mode 100644 index 0000000000..7268b7041d Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_128x128.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_128x128@2x.png b/apps/desktop/resources/icon.iconset/icon_128x128@2x.png new file mode 100644 index 0000000000..8f5b955c0c Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_128x128@2x.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_16x16.png b/apps/desktop/resources/icon.iconset/icon_16x16.png new file mode 100644 index 0000000000..dadec18fbb Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_16x16.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_16x16@2x.png b/apps/desktop/resources/icon.iconset/icon_16x16@2x.png new file mode 100644 index 0000000000..c1289d156f Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_16x16@2x.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_256x256.png b/apps/desktop/resources/icon.iconset/icon_256x256.png new file mode 100644 index 0000000000..8f5b955c0c Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_256x256.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_256x256@2x.png b/apps/desktop/resources/icon.iconset/icon_256x256@2x.png new file mode 100644 index 0000000000..76a70f417f Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_256x256@2x.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_32x32.png b/apps/desktop/resources/icon.iconset/icon_32x32.png new file mode 100644 index 0000000000..c1289d156f Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_32x32.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_32x32@2x.png b/apps/desktop/resources/icon.iconset/icon_32x32@2x.png new file mode 100644 index 0000000000..9a05bc7bbd Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_32x32@2x.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_512x512.png b/apps/desktop/resources/icon.iconset/icon_512x512.png new file mode 100644 index 0000000000..76a70f417f Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_512x512.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_512x512@2x.png b/apps/desktop/resources/icon.iconset/icon_512x512@2x.png new file mode 100644 index 0000000000..7f24ca597a Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_512x512@2x.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_64x64.png b/apps/desktop/resources/icon.iconset/icon_64x64.png new file mode 100644 index 0000000000..9a05bc7bbd Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_64x64.png differ diff --git a/apps/desktop/resources/icon.iconset/icon_64x64@2x.png b/apps/desktop/resources/icon.iconset/icon_64x64@2x.png new file mode 100644 index 0000000000..7268b7041d Binary files /dev/null and b/apps/desktop/resources/icon.iconset/icon_64x64@2x.png differ diff --git a/apps/desktop/resources/icon.png b/apps/desktop/resources/icon.png new file mode 100644 index 0000000000..6873acee03 Binary files /dev/null and b/apps/desktop/resources/icon.png differ diff --git a/apps/desktop/resources/icons/1024x1024.png b/apps/desktop/resources/icons/1024x1024.png new file mode 100644 index 0000000000..7f24ca597a Binary files /dev/null and b/apps/desktop/resources/icons/1024x1024.png differ diff --git a/apps/desktop/resources/icons/128x128.png b/apps/desktop/resources/icons/128x128.png new file mode 100644 index 0000000000..7268b7041d Binary files /dev/null and b/apps/desktop/resources/icons/128x128.png differ diff --git a/apps/desktop/resources/icons/16x16.png b/apps/desktop/resources/icons/16x16.png new file mode 100644 index 0000000000..dadec18fbb Binary files /dev/null and b/apps/desktop/resources/icons/16x16.png differ diff --git a/apps/desktop/resources/icons/256x256.png b/apps/desktop/resources/icons/256x256.png new file mode 100644 index 0000000000..8f5b955c0c Binary files /dev/null and b/apps/desktop/resources/icons/256x256.png differ diff --git a/apps/desktop/resources/icons/32x32.png b/apps/desktop/resources/icons/32x32.png new file mode 100644 index 0000000000..c1289d156f Binary files /dev/null and b/apps/desktop/resources/icons/32x32.png differ diff --git a/apps/desktop/resources/icons/512x512.png b/apps/desktop/resources/icons/512x512.png new file mode 100644 index 0000000000..76a70f417f Binary files /dev/null and b/apps/desktop/resources/icons/512x512.png differ diff --git a/apps/desktop/resources/icons/64x64.png b/apps/desktop/resources/icons/64x64.png new file mode 100644 index 0000000000..9a05bc7bbd Binary files /dev/null and b/apps/desktop/resources/icons/64x64.png differ diff --git a/apps/desktop/resources/installerSidebar.bmp b/apps/desktop/resources/installerSidebar.bmp new file mode 100644 index 0000000000..313f776758 Binary files /dev/null and b/apps/desktop/resources/installerSidebar.bmp differ diff --git a/apps/desktop/resources/native-messaging.bat b/apps/desktop/resources/native-messaging.bat new file mode 100644 index 0000000000..45519250dd --- /dev/null +++ b/apps/desktop/resources/native-messaging.bat @@ -0,0 +1,7 @@ +@echo off +:: Helper script for starting the Native Messaging Proxy on Windows. + +cd ../ +set ELECTRON_RUN_AS_NODE=1 +set ELECTRON_NO_ATTACH_CONSOLE=1 +Bitwarden.exe resources/app.asar %* diff --git a/apps/desktop/scripts/after-sign.js b/apps/desktop/scripts/after-sign.js new file mode 100644 index 0000000000..fe82f735a1 --- /dev/null +++ b/apps/desktop/scripts/after-sign.js @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/no-var-requires, no-console */ +require("dotenv").config(); +const path = require("path"); + +const { deepAssign } = require("builder-util"); +const { notarize } = require("electron-notarize"); +const fse = require("fs-extra"); + +exports.default = run; + +async function run(context) { + console.log("## After sign"); + // console.log(context); + + const appName = context.packager.appInfo.productFilename; + const appPath = `${context.appOutDir}/${appName}.app`; + const macBuild = context.electronPlatformName === "darwin"; + const copyPlugIn = ["darwin", "mas"].includes(context.electronPlatformName); + + if (copyPlugIn) { + // Copy Safari plugin to work-around https://github.com/electron-userland/electron-builder/issues/5552 + const plugIn = path.join(__dirname, "../PlugIns"); + if (fse.existsSync(plugIn)) { + fse.mkdirSync(path.join(appPath, "Contents/PlugIns")); + fse.copySync( + path.join(plugIn, "safari.appex"), + path.join(appPath, "Contents/PlugIns/safari.appex") + ); + + // Resign to sign safari extension + if (context.electronPlatformName === "mas") { + const masBuildOptions = deepAssign( + {}, + context.packager.platformSpecificBuildOptions, + context.packager.config.mas + ); + if (context.targets.some((e) => e.name === "mas-dev")) { + deepAssign(masBuildOptions, { + type: "development", + }); + } + if (context.packager.packagerOptions.prepackaged == null) { + await context.packager.sign(appPath, context.appOutDir, masBuildOptions, context.arch); + } + } else { + await context.packager.signApp(context, true); + } + } + } + + if (macBuild) { + console.log("### Notarizing " + appPath); + const appleId = process.env.APPLE_ID_USERNAME || process.env.APPLEID; + const appleIdPassword = process.env.APPLE_ID_PASSWORD || `@keychain:AC_PASSWORD`; + return await notarize({ + appBundleId: "com.bitwarden.desktop", + appPath: appPath, + appleId: appleId, + appleIdPassword: appleIdPassword, + }); + } +} diff --git a/apps/desktop/scripts/cask-update.ps1 b/apps/desktop/scripts/cask-update.ps1 new file mode 100644 index 0000000000..051708aec9 --- /dev/null +++ b/apps/desktop/scripts/cask-update.ps1 @@ -0,0 +1,17 @@ +param ( + [Parameter(Mandatory=$true)] + [string] $version +) + +# Dependencies: +# 1. brew cask install powershell +# 2. brew install vitorgalvao/tiny-scripts/cask-repair +# see https://github.com/Homebrew/homebrew-cask/blob/master/CONTRIBUTING.md#updating-a-cask +# 3. fork of homebrew-cask repo setup. +# see https://github.com/caskroom/homebrew-cask/blob/master/CONTRIBUTING.md#getting-set-up-to-contribute +# 4. Environment variables for GITHUB_USER and GITHUB_TOKEN set. +# +# To run: +# pwsh ./cask-update.ps1 -version 1.3.0 + +cask-repair --cask-version $version --blind-submit --fail-on-error bitwarden diff --git a/apps/desktop/scripts/choco-update.ps1 b/apps/desktop/scripts/choco-update.ps1 new file mode 100644 index 0000000000..72677357aa --- /dev/null +++ b/apps/desktop/scripts/choco-update.ps1 @@ -0,0 +1,34 @@ +param ( + [Parameter(Mandatory=$true)] + [string] $version +) + +# To run: +# .\choco-update.ps1 -version 1.3.0 + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path; +$rootDir = $dir + "\.."; +$distDir = $rootDir + "\dist"; +$chocoDir = $rootDir + "\stores\chocolatey"; +$distChocoDir = $distDir + "\chocolatey"; + +if(Test-Path -Path $distChocoDir) { + Remove-Item -Recurse -Force $distChocoDir +} + +Copy-Item -Path $chocoDir -Destination $distChocoDir –Recurse + +$exe = $distChocoDir + "\Bitwarden-Installer-" + $version + ".exe"; +$uri = "https://github.com/bitwarden/desktop/releases/download/v" + $version + "/Bitwarden-Installer-" + $version + ".exe"; +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Invoke-RestMethod -Uri $uri -OutFile $exe + +$checksum = checksum -t sha256 $exe +$nuspec = $distChocoDir + "\bitwarden.nuspec"; +$chocoInstall = $distChocoDir + "\tools\chocolateyinstall.ps1"; + +(Get-Content $chocoInstall).replace('__version__', $version).replace('__checksum__', $checksum) | Set-Content $chocoInstall +choco pack $nuspec --version $version --out $distChocoDir +cd $distChocoDir +choco push +cd $rootDir diff --git a/apps/desktop/scripts/dev/.gitignore b/apps/desktop/scripts/dev/.gitignore new file mode 100644 index 0000000000..1269488f7f --- /dev/null +++ b/apps/desktop/scripts/dev/.gitignore @@ -0,0 +1 @@ +data diff --git a/apps/desktop/scripts/dev/docker-compose.yml b/apps/desktop/scripts/dev/docker-compose.yml new file mode 100644 index 0000000000..e6332def40 --- /dev/null +++ b/apps/desktop/scripts/dev/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3" + +services: + minio: + image: minio/minio + command: server /data --console-address ":9001" + ports: + - "9000:9000" + - "9001:9001" + # environment: + # MINIO_ROOT_USER: minioadmin + # MINIO_ROOT_PASSWORD: minioadmin + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + volumes: + - ./data:/data diff --git a/apps/desktop/scripts/download-legacy-safari.ps1 b/apps/desktop/scripts/download-legacy-safari.ps1 new file mode 100644 index 0000000000..71c9393972 --- /dev/null +++ b/apps/desktop/scripts/download-legacy-safari.ps1 @@ -0,0 +1,12 @@ +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path; +$rootDir = $dir + "\.."; +$outputPath = $rootDir + "\PlugIns"; +$zipFileName = "safari-legacy.appex.zip"; +$downloadOutput = $outputPath + "\" + $zipFileName; + +Invoke-WebRequest -Uri "https://github.com/bitwarden/browser/releases/download/v1.48.1/safari-legacy.appex.zip" -OutFile $downloadOutput + +Set-Location $outputPath +Invoke-Expression -Command "unzip $zipFileName" + +Remove-Item $downloadOutput diff --git a/apps/desktop/scripts/safari-build.ps1 b/apps/desktop/scripts/safari-build.ps1 new file mode 100644 index 0000000000..ed60c41dd3 --- /dev/null +++ b/apps/desktop/scripts/safari-build.ps1 @@ -0,0 +1,72 @@ +param ( + [string] $version, + [switch] $mas, + [switch] $masdev, + [switch] $skipcheckout, + [switch] $skipoutcopy, + [switch] $copyonly +) + +# Dependencies: +# 1. brew cask install powershell +# +# To run: +# pwsh ./build-safari-appex.ps1 -version 1.41.0 + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path; +$rootDir = $dir + "\.."; +$distSafariDir = $rootDir + "\dist-safari"; +$distSafariAppexDmg = $distSafariDir + "\browser\dist\Safari\dmg\build\Release\safari.appex"; +$distSafariAppexMas = $distSafariDir + "\browser\dist\Safari\mas\build\Release\safari.appex"; +$distSafariAppexMasDev = $distSafariDir + "\browser\dist\Safari\masdev\build\Release\safari.appex"; +$pluginsAppex = $rootDir + "\PlugIns\safari.appex"; + +function CopyOutput { + if ($mas) { + Copy-Item -Path $distSafariAppexMas -Destination $pluginsAppex –Recurse + } + elseif ($masdev) { + Copy-Item -Path $distSafariAppexMasDev -Destination $pluginsAppex –Recurse + } + else { + Copy-Item -Path $distSafariAppexDmg -Destination $pluginsAppex –Recurse + } +} + +if (Test-Path -Path $pluginsAppex) { + Remove-Item -Recurse -Force $pluginsAppex +} + +if ($copyonly) { + CopyOutput + exit +} + +if(-not $skipcheckout) { + if (Test-Path -Path $distSafariDir) { + Remove-Item -Recurse -Force $distSafariDir + } + New-Item $distSafariDir -ItemType Directory -ea 0 +} + +cd $distSafariDir + +if(-not $skipcheckout) { + git clone git@github.com:bitwarden/browser.git +} + +cd browser + +if (-not ([string]::IsNullOrEmpty($version))) { + $tag = "v" + $version + git checkout tags/$tag +} + +npm i +npm run dist:safari + +if (-not $skipoutcopy) { + CopyOutput +} + +cd $rootDir diff --git a/apps/desktop/scripts/snap-update.ps1 b/apps/desktop/scripts/snap-update.ps1 new file mode 100644 index 0000000000..095c61a393 --- /dev/null +++ b/apps/desktop/scripts/snap-update.ps1 @@ -0,0 +1,28 @@ +param ( + [Parameter(Mandatory=$true)] + [string] $version +) + +# Dependencies: +# 1. Install powershell, ex `sudo apt-get install -y powershell` +# +# To run: +# pwsh ./snap-update.ps1 -version 1.5.0 + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path; +$rootDir = $dir + "/.."; +$distDir = $rootDir + "/dist"; +$distSnapDir = $distDir + "/snap"; + +if(Test-Path -Path $distSnapDir) { + Remove-Item -Recurse -Force $distSnapDir +} +New-Item -ItemType directory -Path $distSnapDir | Out-Null + +$snap = "bitwarden_" + $version + "_amd64.snap"; +$distSnap = $distSnapDir + "/" + $snap; +$uri = "https://github.com/bitwarden/desktop/releases/download/v" + $version + "/" + $snap; +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Invoke-RestMethod -Uri $uri -OutFile $distSnap + +snapcraft upload $distSnap --release stable diff --git a/apps/desktop/sign.js b/apps/desktop/sign.js new file mode 100644 index 0000000000..fe57a1343a --- /dev/null +++ b/apps/desktop/sign.js @@ -0,0 +1,22 @@ +/* eslint-disable @typescript-eslint/no-var-requires, no-console */ + +exports.default = async function (configuration) { + if (parseInt(process.env.ELECTRON_BUILDER_SIGN) === 1 && configuration.path.slice(-4) == ".exe") { + console.log(`[*] Signing file: ${configuration.path}`); + require("child_process").execSync( + `azuresigntool sign -v ` + + `-kvu ${process.env.SIGNING_VAULT_URL} ` + + `-kvi ${process.env.SIGNING_CLIENT_ID} ` + + `-kvt ${process.env.SIGNING_TENANT_ID} ` + + `-kvs ${process.env.SIGNING_CLIENT_SECRET} ` + + `-kvc ${process.env.SIGNING_CERT_NAME} ` + + `-fd ${configuration.hash} ` + + `-du ${configuration.site} ` + + `-tr http://timestamp.digicert.com ` + + `${configuration.path}`, + { + stdio: "inherit", + } + ); + } +}; diff --git a/apps/desktop/src/app/accounts/environment.component.html b/apps/desktop/src/app/accounts/environment.component.html new file mode 100644 index 0000000000..eff32641c8 --- /dev/null +++ b/apps/desktop/src/app/accounts/environment.component.html @@ -0,0 +1,93 @@ + diff --git a/apps/desktop/src/app/accounts/environment.component.ts b/apps/desktop/src/app/accounts/environment.component.ts new file mode 100644 index 0000000000..e9077384b2 --- /dev/null +++ b/apps/desktop/src/app/accounts/environment.component.ts @@ -0,0 +1,20 @@ +import { Component } from "@angular/core"; + +import { EnvironmentComponent as BaseEnvironmentComponent } from "jslib-angular/components/environment.component"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-environment", + templateUrl: "environment.component.html", +}) +export class EnvironmentComponent extends BaseEnvironmentComponent { + constructor( + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + i18nService: I18nService + ) { + super(platformUtilsService, environmentService, i18nService); + } +} diff --git a/apps/desktop/src/app/accounts/hint.component.html b/apps/desktop/src/app/accounts/hint.component.html new file mode 100644 index 0000000000..3ab6088c94 --- /dev/null +++ b/apps/desktop/src/app/accounts/hint.component.html @@ -0,0 +1,31 @@ +
+
+

{{ "passwordHint" | i18n }}

+
+
+
+ + +
+
+ +
+
+ + +
+
+
diff --git a/apps/desktop/src/app/accounts/hint.component.ts b/apps/desktop/src/app/accounts/hint.component.ts new file mode 100644 index 0000000000..5bed1b5858 --- /dev/null +++ b/apps/desktop/src/app/accounts/hint.component.ts @@ -0,0 +1,24 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +import { HintComponent as BaseHintComponent } from "jslib-angular/components/hint.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-hint", + templateUrl: "hint.component.html", +}) +export class HintComponent extends BaseHintComponent { + constructor( + router: Router, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + apiService: ApiService, + logService: LogService + ) { + super(router, i18nService, apiService, platformUtilsService, logService); + } +} diff --git a/apps/desktop/src/app/accounts/lock.component.html b/apps/desktop/src/app/accounts/lock.component.html new file mode 100644 index 0000000000..f5d8b36935 --- /dev/null +++ b/apps/desktop/src/app/accounts/lock.component.html @@ -0,0 +1,75 @@ +
+
+ +

{{ "yourVaultIsLocked" | i18n }}

+
+
+
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+
+
+ +
+
+ + +
+
+
+
diff --git a/apps/desktop/src/app/accounts/lock.component.ts b/apps/desktop/src/app/accounts/lock.component.ts new file mode 100644 index 0000000000..4720e49894 --- /dev/null +++ b/apps/desktop/src/app/accounts/lock.component.ts @@ -0,0 +1,107 @@ +import { Component, NgZone, OnDestroy } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { ipcRenderer } from "electron"; + +import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; + +const BroadcasterSubscriptionId = "LockComponent"; + +@Component({ + selector: "app-lock", + templateUrl: "lock.component.html", +}) +export class LockComponent extends BaseLockComponent implements OnDestroy { + private deferFocus: boolean = null; + + constructor( + router: Router, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + messagingService: MessagingService, + cryptoService: CryptoService, + vaultTimeoutService: VaultTimeoutService, + environmentService: EnvironmentService, + stateService: StateService, + apiService: ApiService, + private route: ActivatedRoute, + private broadcasterService: BroadcasterService, + ngZone: NgZone, + logService: LogService, + keyConnectorService: KeyConnectorService + ) { + super( + router, + i18nService, + platformUtilsService, + messagingService, + cryptoService, + vaultTimeoutService, + environmentService, + stateService, + apiService, + logService, + keyConnectorService, + ngZone + ); + } + + async ngOnInit() { + await super.ngOnInit(); + const autoPromptBiometric = !(await this.stateService.getNoAutoPromptBiometrics()); + + this.route.queryParams.subscribe((params) => { + if (this.supportsBiometric && params.promptBiometric && autoPromptBiometric) { + setTimeout(async () => { + if (await ipcRenderer.invoke("windowVisible")) { + this.unlockBiometric(); + } + }, 1000); + } + }); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(() => { + switch (message.command) { + case "windowHidden": + this.onWindowHidden(); + break; + case "windowIsFocused": + if (this.deferFocus === null) { + this.deferFocus = !message.windowIsFocused; + if (!this.deferFocus) { + this.focusInput(); + } + } else if (this.deferFocus && message.windowIsFocused) { + this.focusInput(); + this.deferFocus = false; + } + break; + default: + } + }); + }); + this.messagingService.send("getWindowIsFocused"); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + onWindowHidden() { + this.showPassword = false; + } + + private focusInput() { + document.getElementById(this.pinLock ? "pin" : "masterPassword").focus(); + } +} diff --git a/apps/desktop/src/app/accounts/login.component.html b/apps/desktop/src/app/accounts/login.component.html new file mode 100644 index 0000000000..4ec1307f54 --- /dev/null +++ b/apps/desktop/src/app/accounts/login.component.html @@ -0,0 +1,104 @@ +
+ +
+
+ Bitwarden +

{{ "loginOrCreateNewAccount" | i18n }}

+
+
+
+ + +
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+ +
+
+
+
+ diff --git a/apps/desktop/src/app/accounts/login.component.ts b/apps/desktop/src/app/accounts/login.component.ts new file mode 100644 index 0000000000..022aae21ea --- /dev/null +++ b/apps/desktop/src/app/accounts/login.component.ts @@ -0,0 +1,128 @@ +import { Component, NgZone, OnDestroy, ViewChild, ViewContainerRef } from "@angular/core"; +import { Router } from "@angular/router"; + +import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; + +import { EnvironmentComponent } from "./environment.component"; + +const BroadcasterSubscriptionId = "LoginComponent"; + +@Component({ + selector: "app-login", + templateUrl: "login.component.html", +}) +export class LoginComponent extends BaseLoginComponent implements OnDestroy { + @ViewChild("environment", { read: ViewContainerRef, static: true }) + environmentModal: ViewContainerRef; + + showingModal = false; + + protected alwaysRememberEmail = true; + + private deferFocus: boolean = null; + + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + syncService: SyncService, + private modalService: ModalService, + platformUtilsService: PlatformUtilsService, + stateService: StateService, + environmentService: EnvironmentService, + passwordGenerationService: PasswordGenerationService, + cryptoFunctionService: CryptoFunctionService, + private broadcasterService: BroadcasterService, + ngZone: NgZone, + private messagingService: MessagingService, + logService: LogService + ) { + super( + authService, + router, + platformUtilsService, + i18nService, + stateService, + environmentService, + passwordGenerationService, + cryptoFunctionService, + logService, + ngZone + ); + super.onSuccessfulLogin = () => { + return syncService.fullSync(true); + }; + } + + async ngOnInit() { + await super.ngOnInit(); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(() => { + switch (message.command) { + case "windowHidden": + this.onWindowHidden(); + break; + case "windowIsFocused": + if (this.deferFocus === null) { + this.deferFocus = !message.windowIsFocused; + if (!this.deferFocus) { + this.focusInput(); + } + } else if (this.deferFocus && message.windowIsFocused) { + this.focusInput(); + this.deferFocus = false; + } + break; + default: + } + }); + }); + this.messagingService.send("getWindowIsFocused"); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async settings() { + const [modal, childComponent] = await this.modalService.openViewRef( + EnvironmentComponent, + this.environmentModal + ); + + modal.onShown.subscribe(() => { + this.showingModal = true; + }); + modal.onClosed.subscribe(() => { + this.showingModal = false; + }); + + childComponent.onSaved.subscribe(() => { + modal.close(); + }); + } + + onWindowHidden() { + this.showPassword = false; + } + + async submit() { + await super.submit(); + if (this.captchaSiteKey) { + const content = document.getElementById("content") as HTMLDivElement; + content.setAttribute("style", "width:335px"); + } + } +} diff --git a/apps/desktop/src/app/accounts/premium.component.html b/apps/desktop/src/app/accounts/premium.component.html new file mode 100644 index 0000000000..01c181daa8 --- /dev/null +++ b/apps/desktop/src/app/accounts/premium.component.html @@ -0,0 +1,89 @@ + diff --git a/apps/desktop/src/app/accounts/premium.component.ts b/apps/desktop/src/app/accounts/premium.component.ts new file mode 100644 index 0000000000..7e97860f74 --- /dev/null +++ b/apps/desktop/src/app/accounts/premium.component.ts @@ -0,0 +1,24 @@ +import { Component } from "@angular/core"; + +import { PremiumComponent as BasePremiumComponent } from "jslib-angular/components/premium.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Component({ + selector: "app-premium", + templateUrl: "premium.component.html", +}) +export class PremiumComponent extends BasePremiumComponent { + constructor( + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + logService: LogService, + stateService: StateService + ) { + super(i18nService, platformUtilsService, apiService, logService, stateService); + } +} diff --git a/apps/desktop/src/app/accounts/register.component.html b/apps/desktop/src/app/accounts/register.component.html new file mode 100644 index 0000000000..3de6aac86c --- /dev/null +++ b/apps/desktop/src/app/accounts/register.component.html @@ -0,0 +1,148 @@ +
+
+

{{ "createAccount" | i18n }}

+
+
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+ + +
+
+ +
+
+ +
+
+ +
+
+ + +
+
+
diff --git a/apps/desktop/src/app/accounts/register.component.ts b/apps/desktop/src/app/accounts/register.component.ts new file mode 100644 index 0000000000..4188a19495 --- /dev/null +++ b/apps/desktop/src/app/accounts/register.component.ts @@ -0,0 +1,73 @@ +import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; + +import { RegisterComponent as BaseRegisterComponent } from "jslib-angular/components/register.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +const BroadcasterSubscriptionId = "RegisterComponent"; + +@Component({ + selector: "app-register", + templateUrl: "register.component.html", +}) +export class RegisterComponent extends BaseRegisterComponent implements OnInit, OnDestroy { + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + cryptoService: CryptoService, + apiService: ApiService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + passwordGenerationService: PasswordGenerationService, + environmentService: EnvironmentService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + logService: LogService + ) { + super( + authService, + router, + i18nService, + cryptoService, + apiService, + stateService, + platformUtilsService, + passwordGenerationService, + environmentService, + logService + ); + } + + async ngOnInit() { + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(() => { + switch (message.command) { + case "windowHidden": + this.onWindowHidden(); + break; + default: + } + }); + }); + + super.ngOnInit(); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + onWindowHidden() { + this.showPassword = false; + } +} diff --git a/apps/desktop/src/app/accounts/remove-password.component.html b/apps/desktop/src/app/accounts/remove-password.component.html new file mode 100644 index 0000000000..87f86e7721 --- /dev/null +++ b/apps/desktop/src/app/accounts/remove-password.component.html @@ -0,0 +1,26 @@ +
+
+

{{ "removeMasterPassword" | i18n }}

+

{{ "convertOrganizationEncryptionDesc" | i18n: organization.name }}

+
+ + +
+
+
diff --git a/apps/desktop/src/app/accounts/remove-password.component.ts b/apps/desktop/src/app/accounts/remove-password.component.ts new file mode 100644 index 0000000000..cdb75058ab --- /dev/null +++ b/apps/desktop/src/app/accounts/remove-password.component.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +import { RemovePasswordComponent as BaseRemovePasswordComponent } from "jslib-angular/components/remove-password.component"; + +@Component({ + selector: "app-remove-password", + templateUrl: "remove-password.component.html", +}) +export class RemovePasswordComponent extends BaseRemovePasswordComponent {} diff --git a/apps/desktop/src/app/accounts/set-password.component.html b/apps/desktop/src/app/accounts/set-password.component.html new file mode 100644 index 0000000000..0e51f5f277 --- /dev/null +++ b/apps/desktop/src/app/accounts/set-password.component.html @@ -0,0 +1,157 @@ +
+
+ Bitwarden +

{{ "setMasterPassword" | i18n }}

+
+ + {{ "loading" | i18n }} +
+
+
+ {{ "ssoCompleteRegistration" | i18n }} + + {{ "resetPasswordAutoEnrollInviteWarning" | i18n }} + + + +
+ +
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + +
+ +
+
+ diff --git a/apps/desktop/src/app/accounts/set-password.component.ts b/apps/desktop/src/app/accounts/set-password.component.ts new file mode 100644 index 0000000000..b2aa69738f --- /dev/null +++ b/apps/desktop/src/app/accounts/set-password.component.ts @@ -0,0 +1,104 @@ +import { Component, NgZone, OnDestroy } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { SetPasswordComponent as BaseSetPasswordComponent } from "jslib-angular/components/set-password.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; + +const BroadcasterSubscriptionId = "SetPasswordComponent"; + +@Component({ + selector: "app-set-password", + templateUrl: "set-password.component.html", +}) +export class SetPasswordComponent extends BaseSetPasswordComponent implements OnDestroy { + constructor( + apiService: ApiService, + i18nService: I18nService, + cryptoService: CryptoService, + messagingService: MessagingService, + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + policyService: PolicyService, + router: Router, + syncService: SyncService, + route: ActivatedRoute, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + stateService: StateService + ) { + super( + i18nService, + cryptoService, + messagingService, + passwordGenerationService, + platformUtilsService, + policyService, + router, + apiService, + syncService, + route, + stateService + ); + } + + get masterPasswordScoreWidth() { + return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20; + } + + get masterPasswordScoreColor() { + switch (this.masterPasswordScore) { + case 4: + return "success"; + case 3: + return "primary"; + case 2: + return "warning"; + default: + return "danger"; + } + } + + get masterPasswordScoreText() { + switch (this.masterPasswordScore) { + case 4: + return this.i18nService.t("strong"); + case 3: + return this.i18nService.t("good"); + case 2: + return this.i18nService.t("weak"); + default: + return this.masterPasswordScore != null ? this.i18nService.t("weak") : null; + } + } + + async ngOnInit() { + await super.ngOnInit(); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(() => { + switch (message.command) { + case "windowHidden": + this.onWindowHidden(); + break; + default: + } + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + onWindowHidden() { + this.showPassword = false; + } +} diff --git a/apps/desktop/src/app/accounts/settings.component.html b/apps/desktop/src/app/accounts/settings.component.html new file mode 100644 index 0000000000..9c39a35ebb --- /dev/null +++ b/apps/desktop/src/app/accounts/settings.component.html @@ -0,0 +1,354 @@ + diff --git a/apps/desktop/src/app/accounts/settings.component.ts b/apps/desktop/src/app/accounts/settings.component.ts new file mode 100644 index 0000000000..b374149b50 --- /dev/null +++ b/apps/desktop/src/app/accounts/settings.component.ts @@ -0,0 +1,407 @@ +import { Component, OnInit } from "@angular/core"; +import { FormControl } from "@angular/forms"; +import { debounceTime } from "rxjs/operators"; + +import { ModalService } from "jslib-angular/services/modal.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; +import { DeviceType } from "jslib-common/enums/deviceType"; +import { StorageLocation } from "jslib-common/enums/storageLocation"; +import { ThemeType } from "jslib-common/enums/themeType"; +import { Utils } from "jslib-common/misc/utils"; +import { isWindowsStore } from "jslib-electron/utils"; + +import { SetPinComponent } from "../components/set-pin.component"; + +@Component({ + selector: "app-settings", + templateUrl: "settings.component.html", +}) +export class SettingsComponent implements OnInit { + vaultTimeoutAction: string; + pin: boolean = null; + disableFavicons = false; + enableBrowserIntegration = false; + enableBrowserIntegrationFingerprint = false; + enableMinToTray = false; + enableCloseToTray = false; + enableTray = false; + showMinToTray = false; + startToTray = false; + minimizeOnCopyToClipboard = false; + locale: string; + vaultTimeouts: any[]; + localeOptions: any[]; + theme: ThemeType; + themeOptions: any[]; + clearClipboard: number; + clearClipboardOptions: any[]; + supportsBiometric: boolean; + biometric: boolean; + biometricText: string; + noAutoPromptBiometrics: boolean; + noAutoPromptBiometricsText: string; + alwaysShowDock: boolean; + showAlwaysShowDock = false; + openAtLogin: boolean; + requireEnableTray = false; + + enableTrayText: string; + enableTrayDescText: string; + enableMinToTrayText: string; + enableMinToTrayDescText: string; + enableCloseToTrayText: string; + enableCloseToTrayDescText: string; + startToTrayText: string; + startToTrayDescText: string; + + vaultTimeout: FormControl = new FormControl(null); + + showSecurity = true; + showAccountPreferences = true; + showAppPreferences = true; + + currentUserEmail: string; + + constructor( + private i18nService: I18nService, + private platformUtilsService: PlatformUtilsService, + private vaultTimeoutService: VaultTimeoutService, + private stateService: StateService, + private messagingService: MessagingService, + private cryptoService: CryptoService, + private modalService: ModalService + ) { + const isMac = this.platformUtilsService.getDevice() === DeviceType.MacOsDesktop; + + // Workaround to avoid ghosting trays https://github.com/electron/electron/issues/17622 + this.requireEnableTray = this.platformUtilsService.getDevice() === DeviceType.LinuxDesktop; + + const trayKey = isMac ? "enableMenuBar" : "enableTray"; + this.enableTrayText = this.i18nService.t(trayKey); + this.enableTrayDescText = this.i18nService.t(trayKey + "Desc"); + + const minToTrayKey = isMac ? "enableMinToMenuBar" : "enableMinToTray"; + this.enableMinToTrayText = this.i18nService.t(minToTrayKey); + this.enableMinToTrayDescText = this.i18nService.t(minToTrayKey + "Desc"); + + const closeToTrayKey = isMac ? "enableCloseToMenuBar" : "enableCloseToTray"; + this.enableCloseToTrayText = this.i18nService.t(closeToTrayKey); + this.enableCloseToTrayDescText = this.i18nService.t(closeToTrayKey + "Desc"); + + const startToTrayKey = isMac ? "startToMenuBar" : "startToTray"; + this.startToTrayText = this.i18nService.t(startToTrayKey); + this.startToTrayDescText = this.i18nService.t(startToTrayKey + "Desc"); + + this.vaultTimeouts = [ + // { name: i18nService.t('immediately'), value: 0 }, + { name: i18nService.t("oneMinute"), value: 1 }, + { name: i18nService.t("fiveMinutes"), value: 5 }, + { name: i18nService.t("fifteenMinutes"), value: 15 }, + { name: i18nService.t("thirtyMinutes"), value: 30 }, + { name: i18nService.t("oneHour"), value: 60 }, + { name: i18nService.t("fourHours"), value: 240 }, + { name: i18nService.t("onIdle"), value: -4 }, + { name: i18nService.t("onSleep"), value: -3 }, + ]; + + if (this.platformUtilsService.getDevice() !== DeviceType.LinuxDesktop) { + this.vaultTimeouts.push({ name: i18nService.t("onLocked"), value: -2 }); + } + + this.vaultTimeouts = this.vaultTimeouts.concat([ + { name: i18nService.t("onRestart"), value: -1 }, + { name: i18nService.t("never"), value: null }, + ]); + + const localeOptions: any[] = []; + i18nService.supportedTranslationLocales.forEach((locale) => { + let name = locale; + if (i18nService.localeNames.has(locale)) { + name += " - " + i18nService.localeNames.get(locale); + } + localeOptions.push({ name: name, value: locale }); + }); + localeOptions.sort(Utils.getSortFunction(i18nService, "name")); + localeOptions.splice(0, 0, { name: i18nService.t("default"), value: null }); + this.localeOptions = localeOptions; + + this.themeOptions = [ + { name: i18nService.t("default"), value: ThemeType.System }, + { name: i18nService.t("light"), value: ThemeType.Light }, + { name: i18nService.t("dark"), value: ThemeType.Dark }, + { name: "Nord", value: ThemeType.Nord }, + ]; + + this.clearClipboardOptions = [ + { name: i18nService.t("never"), value: null }, + { name: i18nService.t("tenSeconds"), value: 10 }, + { name: i18nService.t("twentySeconds"), value: 20 }, + { name: i18nService.t("thirtySeconds"), value: 30 }, + { name: i18nService.t("oneMinute"), value: 60 }, + { name: i18nService.t("twoMinutes"), value: 120 }, + { name: i18nService.t("fiveMinutes"), value: 300 }, + ]; + } + + async ngOnInit() { + // App preferences + this.showMinToTray = this.platformUtilsService.getDevice() !== DeviceType.LinuxDesktop; + this.enableMinToTray = await this.stateService.getEnableMinimizeToTray(); + this.enableCloseToTray = await this.stateService.getEnableCloseToTray(); + this.enableTray = await this.stateService.getEnableTray(); + this.startToTray = await this.stateService.getEnableStartToTray(); + + this.alwaysShowDock = await this.stateService.getAlwaysShowDock(); + this.showAlwaysShowDock = this.platformUtilsService.getDevice() === DeviceType.MacOsDesktop; + this.openAtLogin = await this.stateService.getOpenAtLogin(); + + this.locale = await this.stateService.getLocale(); + this.theme = await this.stateService.getTheme(); + + if ((await this.stateService.getUserId()) == null) { + return; + } + this.currentUserEmail = await this.stateService.getEmail(); + + // Security + this.vaultTimeout.setValue(await this.stateService.getVaultTimeout()); + this.vaultTimeoutAction = await this.stateService.getVaultTimeoutAction(); + this.vaultTimeout.valueChanges.pipe(debounceTime(500)).subscribe(() => { + this.saveVaultTimeoutOptions(); + }); + + const pinSet = await this.vaultTimeoutService.isPinLockSet(); + this.pin = pinSet[0] || pinSet[1]; + + // Account preferences + this.disableFavicons = await this.stateService.getDisableFavicon(); + this.enableBrowserIntegration = await this.stateService.getEnableBrowserIntegration(); + this.enableBrowserIntegrationFingerprint = + await this.stateService.getEnableBrowserIntegrationFingerprint(); + this.clearClipboard = await this.stateService.getClearClipboard(); + this.minimizeOnCopyToClipboard = await this.stateService.getMinimizeOnCopyToClipboard(); + this.supportsBiometric = await this.platformUtilsService.supportsBiometric(); + this.biometric = await this.vaultTimeoutService.isBiometricLockSet(); + this.biometricText = await this.stateService.getBiometricText(); + this.noAutoPromptBiometrics = await this.stateService.getNoAutoPromptBiometrics(); + this.noAutoPromptBiometricsText = await this.stateService.getNoAutoPromptBiometricsText(); + } + + async saveVaultTimeoutOptions() { + if (this.vaultTimeoutAction === "logOut") { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("vaultTimeoutLogOutConfirmation"), + this.i18nService.t("vaultTimeoutLogOutConfirmationTitle"), + this.i18nService.t("yes"), + this.i18nService.t("cancel"), + "warning" + ); + if (!confirmed) { + this.vaultTimeoutAction = "lock"; + return; + } + } + + // Avoid saving 0 since it's useless as a timeout value. + if (this.vaultTimeout.value === 0) { + return; + } + + if (!this.vaultTimeout.valid) { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("vaultTimeoutTooLarge") + ); + return; + } + + await this.vaultTimeoutService.setVaultTimeoutOptions( + this.vaultTimeout.value, + this.vaultTimeoutAction + ); + } + + async updatePin() { + if (this.pin) { + const ref = this.modalService.open(SetPinComponent, { allowMultipleModals: true }); + + if (ref == null) { + this.pin = false; + return; + } + + this.pin = await ref.onClosedPromise(); + } + if (!this.pin) { + await this.cryptoService.clearPinProtectedKey(); + await this.vaultTimeoutService.clear(); + } + } + + async updateBiometric() { + const current = this.biometric; + if (this.biometric) { + this.biometric = false; + } else if (this.supportsBiometric) { + this.biometric = await this.platformUtilsService.authenticateBiometric(); + } + if (this.biometric === current) { + return; + } + if (this.biometric) { + await this.stateService.setBiometricUnlock(true); + } else { + await this.stateService.setBiometricUnlock(null); + await this.stateService.setNoAutoPromptBiometrics(null); + this.noAutoPromptBiometrics = false; + } + await this.stateService.setBiometricLocked(false); + await this.cryptoService.toggleKey(); + } + + async updateNoAutoPromptBiometrics() { + if (!this.biometric) { + this.noAutoPromptBiometrics = false; + } + + if (this.noAutoPromptBiometrics) { + await this.stateService.setNoAutoPromptBiometrics(true); + } else { + await this.stateService.setNoAutoPromptBiometrics(null); + } + } + + async saveFavicons() { + await this.stateService.setDisableFavicon(this.disableFavicons); + await this.stateService.setDisableFavicon(this.disableFavicons, { + storageLocation: StorageLocation.Disk, + }); + this.messagingService.send("refreshCiphers"); + } + + async saveMinToTray() { + await this.stateService.setEnableMinimizeToTray(this.enableMinToTray); + } + + async saveCloseToTray() { + if (this.requireEnableTray) { + this.enableTray = true; + await this.stateService.setEnableTray(this.enableTray); + } + + await this.stateService.setEnableCloseToTray(this.enableCloseToTray); + } + + async saveTray() { + if ( + this.requireEnableTray && + !this.enableTray && + (this.startToTray || this.enableCloseToTray) + ) { + const confirm = await this.platformUtilsService.showDialog( + this.i18nService.t("confirmTrayDesc"), + this.i18nService.t("confirmTrayTitle"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + + if (confirm) { + this.startToTray = false; + await this.stateService.setEnableStartToTray(this.startToTray); + this.enableCloseToTray = false; + await this.stateService.setEnableCloseToTray(this.enableCloseToTray); + } else { + this.enableTray = true; + } + + return; + } + + await this.stateService.setEnableTray(this.enableTray); + this.messagingService.send(this.enableTray ? "showTray" : "removeTray"); + } + + async saveStartToTray() { + if (this.requireEnableTray) { + this.enableTray = true; + await this.stateService.setEnableTray(this.enableTray); + } + + await this.stateService.setEnableStartToTray(this.startToTray); + } + + async saveLocale() { + await this.stateService.setLocale(this.locale); + } + + async saveTheme() { + await this.stateService.setTheme(this.theme); + window.setTimeout(() => window.location.reload(), 200); + } + + async saveMinOnCopyToClipboard() { + await this.stateService.setMinimizeOnCopyToClipboard(this.minimizeOnCopyToClipboard); + } + + async saveClearClipboard() { + await this.stateService.setClearClipboard(this.clearClipboard); + } + + async saveAlwaysShowDock() { + await this.stateService.setAlwaysShowDock(this.alwaysShowDock); + } + + async saveOpenAtLogin() { + this.stateService.setOpenAtLogin(this.openAtLogin); + this.messagingService.send(this.openAtLogin ? "addOpenAtLogin" : "removeOpenAtLogin"); + } + + async saveBrowserIntegration() { + if (process.platform === "darwin" && !this.platformUtilsService.isMacAppStore()) { + await this.platformUtilsService.showDialog( + this.i18nService.t("browserIntegrationMasOnlyDesc"), + this.i18nService.t("browserIntegrationMasOnlyTitle"), + this.i18nService.t("ok"), + null, + "warning" + ); + + this.enableBrowserIntegration = false; + return; + } else if (isWindowsStore()) { + await this.platformUtilsService.showDialog( + this.i18nService.t("browserIntegrationWindowsStoreDesc"), + this.i18nService.t("browserIntegrationWindowsStoreTitle"), + this.i18nService.t("ok"), + null, + "warning" + ); + + this.enableBrowserIntegration = false; + return; + } + + await this.stateService.setEnableBrowserIntegration(this.enableBrowserIntegration); + this.messagingService.send( + this.enableBrowserIntegration ? "enableBrowserIntegration" : "disableBrowserIntegration" + ); + + if (!this.enableBrowserIntegration) { + this.enableBrowserIntegrationFingerprint = false; + this.saveBrowserIntegrationFingerprint(); + } + } + + async saveBrowserIntegrationFingerprint() { + await this.stateService.setEnableBrowserIntegrationFingerprint( + this.enableBrowserIntegrationFingerprint + ); + } +} diff --git a/apps/desktop/src/app/accounts/sso.component.html b/apps/desktop/src/app/accounts/sso.component.html new file mode 100644 index 0000000000..cb5bba9dc6 --- /dev/null +++ b/apps/desktop/src/app/accounts/sso.component.html @@ -0,0 +1,9 @@ +
+
+ Bitwarden +
+ + {{ "loading" | i18n }} +
+
+
diff --git a/apps/desktop/src/app/accounts/sso.component.ts b/apps/desktop/src/app/accounts/sso.component.ts new file mode 100644 index 0000000000..d23dc0ee6b --- /dev/null +++ b/apps/desktop/src/app/accounts/sso.component.ts @@ -0,0 +1,54 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { SsoComponent as BaseSsoComponent } from "jslib-angular/components/sso.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; + +@Component({ + selector: "app-sso", + templateUrl: "sso.component.html", +}) +export class SsoComponent extends BaseSsoComponent { + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + syncService: SyncService, + route: ActivatedRoute, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + cryptoFunctionService: CryptoFunctionService, + environmentService: EnvironmentService, + passwordGenerationService: PasswordGenerationService, + logService: LogService + ) { + super( + authService, + router, + i18nService, + route, + stateService, + platformUtilsService, + apiService, + cryptoFunctionService, + environmentService, + passwordGenerationService, + logService + ); + super.onSuccessfulLogin = () => { + return syncService.fullSync(true); + }; + this.redirectUri = "bitwarden://sso-callback"; + this.clientId = "desktop"; + } +} diff --git a/apps/desktop/src/app/accounts/two-factor-options.component.html b/apps/desktop/src/app/accounts/two-factor-options.component.html new file mode 100644 index 0000000000..778d2636e3 --- /dev/null +++ b/apps/desktop/src/app/accounts/two-factor-options.component.html @@ -0,0 +1,33 @@ + diff --git a/apps/desktop/src/app/accounts/two-factor-options.component.ts b/apps/desktop/src/app/accounts/two-factor-options.component.ts new file mode 100644 index 0000000000..892c971bf9 --- /dev/null +++ b/apps/desktop/src/app/accounts/two-factor-options.component.ts @@ -0,0 +1,22 @@ +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +import { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from "jslib-angular/components/two-factor-options.component"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service"; + +@Component({ + selector: "app-two-factor-options", + templateUrl: "two-factor-options.component.html", +}) +export class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent { + constructor( + twoFactorService: TwoFactorService, + router: Router, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService + ) { + super(twoFactorService, router, i18nService, platformUtilsService, window); + } +} diff --git a/apps/desktop/src/app/accounts/two-factor.component.html b/apps/desktop/src/app/accounts/two-factor.component.html new file mode 100644 index 0000000000..e18a1dd0d2 --- /dev/null +++ b/apps/desktop/src/app/accounts/two-factor.component.html @@ -0,0 +1,144 @@ +
+
+

{{ title }}

+

+ {{ "enterVerificationCodeApp" | i18n }} +

+

+ {{ "enterVerificationCodeEmail" | i18n: twoFactorEmail }} +

+
+
+
+ + +
+
+ + +
+
+
+ +

{{ "insertYubiKey" | i18n }}

+ +
+
+
+ + +
+
+ + +
+
+
+
+ +
+ +
+
+
+
+ + +
+
+
+
+ +
+
+
+
+ + +
+
+
+
+
+
+
+

{{ "noTwoStepProviders" | i18n }}

+

{{ "noTwoStepProviders2" | i18n }}

+
+
+
+
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+
+ diff --git a/apps/desktop/src/app/accounts/two-factor.component.ts b/apps/desktop/src/app/accounts/two-factor.component.ts new file mode 100644 index 0000000000..acf8919f49 --- /dev/null +++ b/apps/desktop/src/app/accounts/two-factor.component.ts @@ -0,0 +1,94 @@ +import { Component, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AppIdService } from "jslib-common/abstractions/appId.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service"; +import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; + +import { TwoFactorOptionsComponent } from "./two-factor-options.component"; + +@Component({ + selector: "app-two-factor", + templateUrl: "two-factor.component.html", +}) +export class TwoFactorComponent extends BaseTwoFactorComponent { + @ViewChild("twoFactorOptions", { read: ViewContainerRef, static: true }) + twoFactorOptionsModal: ViewContainerRef; + + showingModal = false; + + constructor( + authService: AuthService, + router: Router, + i18nService: I18nService, + apiService: ApiService, + platformUtilsService: PlatformUtilsService, + syncService: SyncService, + environmentService: EnvironmentService, + private modalService: ModalService, + stateService: StateService, + route: ActivatedRoute, + logService: LogService, + twoFactorService: TwoFactorService, + appIdService: AppIdService + ) { + super( + authService, + router, + i18nService, + apiService, + platformUtilsService, + window, + environmentService, + stateService, + route, + logService, + twoFactorService, + appIdService + ); + super.onSuccessfulLogin = () => { + return syncService.fullSync(true); + }; + } + + async anotherMethod() { + const [modal, childComponent] = await this.modalService.openViewRef( + TwoFactorOptionsComponent, + this.twoFactorOptionsModal + ); + + modal.onShown.subscribe(() => { + this.showingModal = true; + }); + modal.onClosed.subscribe(() => { + this.showingModal = false; + }); + + childComponent.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => { + modal.close(); + this.selectedProviderType = provider; + await this.init(); + }); + childComponent.onRecoverSelected.subscribe(() => { + modal.close(); + }); + } + + async submit() { + await super.submit(); + if (this.captchaSiteKey) { + const content = document.getElementById("content") as HTMLDivElement; + content.setAttribute("style", "width:335px"); + } + } +} diff --git a/apps/desktop/src/app/accounts/update-temp-password.component.html b/apps/desktop/src/app/accounts/update-temp-password.component.html new file mode 100644 index 0000000000..6f5772fc6d --- /dev/null +++ b/apps/desktop/src/app/accounts/update-temp-password.component.html @@ -0,0 +1,122 @@ +
+
+ + {{ "updateMasterPasswordWarning" | i18n }} + + + +
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ + +
+
+ +
+
+ + +
+
+
diff --git a/apps/desktop/src/app/accounts/update-temp-password.component.ts b/apps/desktop/src/app/accounts/update-temp-password.component.ts new file mode 100644 index 0000000000..f12191a163 --- /dev/null +++ b/apps/desktop/src/app/accounts/update-temp-password.component.ts @@ -0,0 +1,80 @@ +import { Component } from "@angular/core"; + +import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from "jslib-angular/components/update-temp-password.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; + +interface MasterPasswordScore { + Color: string; + Text: string; + Width: number; +} + +@Component({ + selector: "app-update-temp-password", + templateUrl: "update-temp-password.component.html", +}) +export class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent { + get masterPasswordScoreStyle(): MasterPasswordScore { + const scoreWidth = this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20; + switch (this.masterPasswordScore) { + case 4: + return { + Color: "bg-success", + Text: "strong", + Width: scoreWidth, + }; + case 3: + return { + Color: "bg-primary", + Text: "good", + Width: scoreWidth, + }; + case 2: + return { + Color: "bg-warning", + Text: "weak", + Width: scoreWidth, + }; + default: + return { + Color: "bg-danger", + Text: "weak", + Width: scoreWidth, + }; + } + } + constructor( + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + passwordGenerationService: PasswordGenerationService, + policyService: PolicyService, + cryptoService: CryptoService, + messagingService: MessagingService, + apiService: ApiService, + syncService: SyncService, + logService: LogService, + stateService: StateService + ) { + super( + i18nService, + platformUtilsService, + passwordGenerationService, + policyService, + cryptoService, + messagingService, + apiService, + stateService, + syncService, + logService + ); + } +} diff --git a/apps/desktop/src/app/accounts/vault-timeout-input.component.html b/apps/desktop/src/app/accounts/vault-timeout-input.component.html new file mode 100644 index 0000000000..62e5a104c1 --- /dev/null +++ b/apps/desktop/src/app/accounts/vault-timeout-input.component.html @@ -0,0 +1,45 @@ + + {{ "vaultTimeoutPolicyInEffect" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }} + + +
+
+ + + {{ "vaultTimeoutDesc" | i18n }} +
+
+
+ + +
+
+ + +
+
+
+ +
diff --git a/apps/desktop/src/app/accounts/vault-timeout-input.component.ts b/apps/desktop/src/app/accounts/vault-timeout-input.component.ts new file mode 100644 index 0000000000..8eb308b4c0 --- /dev/null +++ b/apps/desktop/src/app/accounts/vault-timeout-input.component.ts @@ -0,0 +1,22 @@ +import { Component } from "@angular/core"; +import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from "@angular/forms"; + +import { VaultTimeoutInputComponent as VaultTimeoutInputComponentBase } from "jslib-angular/components/settings/vault-timeout-input.component"; + +@Component({ + selector: "app-vault-timeout-input", + templateUrl: "vault-timeout-input.component.html", + providers: [ + { + provide: NG_VALUE_ACCESSOR, + multi: true, + useExisting: VaultTimeoutInputComponent, + }, + { + provide: NG_VALIDATORS, + multi: true, + useExisting: VaultTimeoutInputComponent, + }, + ], +}) +export class VaultTimeoutInputComponent extends VaultTimeoutInputComponentBase {} diff --git a/apps/desktop/src/app/app-routing.module.ts b/apps/desktop/src/app/app-routing.module.ts new file mode 100644 index 0000000000..7fc70050cf --- /dev/null +++ b/apps/desktop/src/app/app-routing.module.ts @@ -0,0 +1,70 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; + +import { AuthGuardService } from "jslib-angular/services/auth-guard.service"; +import { LockGuardService } from "jslib-angular/services/lock-guard.service"; + +import { LoginGuardService } from "../services/loginGuard.service"; + +import { HintComponent } from "./accounts/hint.component"; +import { LockComponent } from "./accounts/lock.component"; +import { LoginComponent } from "./accounts/login.component"; +import { RegisterComponent } from "./accounts/register.component"; +import { RemovePasswordComponent } from "./accounts/remove-password.component"; +import { SetPasswordComponent } from "./accounts/set-password.component"; +import { SsoComponent } from "./accounts/sso.component"; +import { TwoFactorComponent } from "./accounts/two-factor.component"; +import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component"; +import { SendComponent } from "./send/send.component"; +import { VaultComponent } from "./vault/vault.component"; + +const routes: Routes = [ + { path: "", redirectTo: "/vault", pathMatch: "full" }, + { + path: "lock", + component: LockComponent, + canActivate: [LockGuardService], + }, + { + path: "login", + component: LoginComponent, + canActivate: [LoginGuardService], + }, + { path: "2fa", component: TwoFactorComponent }, + { path: "register", component: RegisterComponent }, + { + path: "vault", + component: VaultComponent, + canActivate: [AuthGuardService], + }, + { path: "hint", component: HintComponent }, + { path: "set-password", component: SetPasswordComponent }, + { path: "sso", component: SsoComponent }, + { + path: "send", + component: SendComponent, + canActivate: [AuthGuardService], + }, + { + path: "update-temp-password", + component: UpdateTempPasswordComponent, + canActivate: [AuthGuardService], + }, + { + path: "remove-password", + component: RemovePasswordComponent, + canActivate: [AuthGuardService], + data: { titleId: "removeMasterPassword" }, + }, +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { + useHash: true, + /*enableTracing: true,*/ + }), + ], + exports: [RouterModule], +}) +export class AppRoutingModule {} diff --git a/apps/desktop/src/app/app.component.ts b/apps/desktop/src/app/app.component.ts new file mode 100644 index 0000000000..b824b5fe3a --- /dev/null +++ b/apps/desktop/src/app/app.component.ts @@ -0,0 +1,626 @@ +import { + Component, + NgZone, + OnInit, + SecurityContext, + Type, + ViewChild, + ViewContainerRef, +} from "@angular/core"; +import { DomSanitizer } from "@angular/platform-browser"; +import { Router } from "@angular/router"; +import { IndividualConfig, ToastrService } from "ngx-toastr"; + +import { ModalRef } from "jslib-angular/components/modal/modal.ref"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { KeyConnectorService } from "jslib-common/abstractions/keyConnector.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { NotificationsService } from "jslib-common/abstractions/notifications.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { SettingsService } from "jslib-common/abstractions/settings.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { SystemService } from "jslib-common/abstractions/system.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; +import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { CipherType } from "jslib-common/enums/cipherType"; + +import { MenuUpdateRequest } from "../main/menu/menu.updater"; + +import { PremiumComponent } from "./accounts/premium.component"; +import { SettingsComponent } from "./accounts/settings.component"; +import { ExportComponent } from "./vault/export.component"; +import { FolderAddEditComponent } from "./vault/folder-add-edit.component"; +import { GeneratorComponent } from "./vault/generator.component"; +import { PasswordGeneratorHistoryComponent } from "./vault/password-generator-history.component"; + +const BroadcasterSubscriptionId = "AppComponent"; +const IdleTimeout = 60000 * 10; // 10 minutes +const SyncInterval = 6 * 60 * 60 * 1000; // 6 hours + +const systemTimeoutOptions = { + onLock: -2, + onSuspend: -3, + onIdle: -4, +}; + +@Component({ + selector: "app-root", + styles: [], + template: ` + + + + + + + +
+
+ +
+ +
+ `, +}) +export class AppComponent implements OnInit { + @ViewChild("settings", { read: ViewContainerRef, static: true }) settingsRef: ViewContainerRef; + @ViewChild("premium", { read: ViewContainerRef, static: true }) premiumRef: ViewContainerRef; + @ViewChild("passwordHistory", { read: ViewContainerRef, static: true }) + passwordHistoryRef: ViewContainerRef; + @ViewChild("exportVault", { read: ViewContainerRef, static: true }) + exportVaultModalRef: ViewContainerRef; + @ViewChild("appFolderAddEdit", { read: ViewContainerRef, static: true }) + folderAddEditModalRef: ViewContainerRef; + @ViewChild("appGenerator", { read: ViewContainerRef, static: true }) + generatorModalRef: ViewContainerRef; + + loading = false; + + private lastActivity: number = null; + private modal: ModalRef = null; + private idleTimer: number = null; + private isIdle = false; + private activeUserId: string = null; + + constructor( + private broadcasterService: BroadcasterService, + private tokenService: TokenService, + private folderService: FolderService, + private settingsService: SettingsService, + private syncService: SyncService, + private passwordGenerationService: PasswordGenerationService, + private cipherService: CipherService, + private authService: AuthService, + private router: Router, + private toastrService: ToastrService, + private i18nService: I18nService, + private sanitizer: DomSanitizer, + private ngZone: NgZone, + private vaultTimeoutService: VaultTimeoutService, + private cryptoService: CryptoService, + private logService: LogService, + private messagingService: MessagingService, + private collectionService: CollectionService, + private searchService: SearchService, + private notificationsService: NotificationsService, + private platformUtilsService: PlatformUtilsService, + private systemService: SystemService, + private stateService: StateService, + private eventService: EventService, + private policyService: PolicyService, + private modalService: ModalService, + private keyConnectorService: KeyConnectorService + ) {} + + ngOnInit() { + this.stateService.activeAccount.subscribe((userId) => { + this.activeUserId = userId; + }); + this.ngZone.runOutsideAngular(() => { + setTimeout(async () => { + await this.updateAppMenu(); + }, 1000); + + window.ontouchstart = () => this.recordActivity(); + window.onmousedown = () => this.recordActivity(); + window.onscroll = () => this.recordActivity(); + window.onkeypress = () => this.recordActivity(); + }); + + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "loggedIn": + case "unlocked": + this.notificationsService.updateConnection(); + this.updateAppMenu(); + this.systemService.cancelProcessReload(); + break; + case "loggedOut": + if (this.modal != null) { + this.modal.close(); + } + this.notificationsService.updateConnection(); + this.updateAppMenu(); + await this.systemService.clearPendingClipboard(); + await this.reloadProcess(); + break; + case "authBlocked": + this.router.navigate(["login"]); + break; + case "logout": + this.loading = message.userId == null || message.userId === this.activeUserId; + await this.logOut(!!message.expired, message.userId); + this.loading = false; + break; + case "lockVault": + await this.vaultTimeoutService.lock(true, message.userId); + break; + case "lockAllVaults": + for (const userId in this.stateService.accounts.getValue()) { + if (userId != null) { + await this.vaultTimeoutService.lock(true, userId); + } + } + break; + case "locked": + if (this.modal != null) { + this.modal.close(); + } + if ( + message.userId == null || + message.userId === (await this.stateService.getUserId()) + ) { + await this.router.navigate(["lock"]); + } + this.notificationsService.updateConnection(); + await this.updateAppMenu(); + await this.systemService.clearPendingClipboard(); + await this.reloadProcess(); + break; + case "reloadProcess": + window.location.reload(true); + break; + case "syncStarted": + break; + case "syncCompleted": + await this.updateAppMenu(); + break; + case "openSettings": + await this.openModal(SettingsComponent, this.settingsRef); + break; + case "openPremium": + await this.openModal(PremiumComponent, this.premiumRef); + break; + case "showFingerprintPhrase": { + const fingerprint = await this.cryptoService.getFingerprint( + await this.stateService.getUserId() + ); + const result = await this.platformUtilsService.showDialog( + this.i18nService.t("yourAccountsFingerprint") + ":\n" + fingerprint.join("-"), + this.i18nService.t("fingerprintPhrase"), + this.i18nService.t("learnMore"), + this.i18nService.t("close") + ); + if (result) { + this.platformUtilsService.launchUri("https://bitwarden.com/help/fingerprint-phrase/"); + } + break; + } + case "openPasswordHistory": + await this.openModal( + PasswordGeneratorHistoryComponent, + this.passwordHistoryRef + ); + break; + case "showToast": + this.showToast(message); + break; + case "copiedToClipboard": + if (!message.clearing) { + this.systemService.clearClipboard(message.clipboardValue, message.clearMs); + } + break; + case "ssoCallback": + this.router.navigate(["sso"], { + queryParams: { code: message.code, state: message.state }, + }); + break; + case "premiumRequired": { + const premiumConfirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("premiumRequiredDesc"), + this.i18nService.t("premiumRequired"), + this.i18nService.t("learnMore"), + this.i18nService.t("cancel") + ); + if (premiumConfirmed) { + await this.openModal(PremiumComponent, this.premiumRef); + } + break; + } + case "emailVerificationRequired": { + const emailVerificationConfirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("emailVerificationRequiredDesc"), + this.i18nService.t("emailVerificationRequired"), + this.i18nService.t("learnMore"), + this.i18nService.t("cancel") + ); + if (emailVerificationConfirmed) { + this.platformUtilsService.launchUri( + "https://bitwarden.com/help/create-bitwarden-account/" + ); + } + break; + } + case "syncVault": + try { + await this.syncService.fullSync(true, true); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("syncingComplete") + ); + } catch { + this.platformUtilsService.showToast( + "error", + null, + this.i18nService.t("syncingFailed") + ); + } + break; + case "checkSyncVault": + try { + const lastSync = await this.syncService.getLastSync(); + let lastSyncAgo = SyncInterval + 1; + if (lastSync != null) { + lastSyncAgo = new Date().getTime() - lastSync.getTime(); + } + + if (lastSyncAgo >= SyncInterval) { + await this.syncService.fullSync(false); + } + } catch (e) { + this.logService.error(e); + } + this.messagingService.send("scheduleNextSync"); + break; + case "exportVault": + await this.openExportVault(); + break; + case "newLogin": + this.routeToVault("add", CipherType.Login); + break; + case "newCard": + this.routeToVault("add", CipherType.Card); + break; + case "newIdentity": + this.routeToVault("add", CipherType.Identity); + break; + case "newSecureNote": + this.routeToVault("add", CipherType.SecureNote); + break; + default: + break; + case "newFolder": + await this.addFolder(); + break; + case "openGenerator": + // openGenerator has extended functionality if called in the vault + if (!this.router.url.includes("vault")) { + await this.openGenerator(); + } + break; + case "convertAccountToKeyConnector": + this.router.navigate(["/remove-password"]); + break; + case "switchAccount": { + if (message.userId != null) { + await this.stateService.setActiveUser(message.userId); + } + const locked = + (await this.authService.getAuthStatus(message.userId)) === + AuthenticationStatus.Locked; + if (locked) { + this.messagingService.send("locked", { userId: message.userId }); + } else { + this.messagingService.send("unlocked"); + this.loading = true; + await this.syncService.fullSync(true); + this.loading = false; + this.router.navigate(["vault"]); + } + break; + } + case "systemSuspended": + await this.checkForSystemTimeout(systemTimeoutOptions.onSuspend); + break; + case "systemLocked": + await this.checkForSystemTimeout(systemTimeoutOptions.onLock); + break; + case "systemIdle": + await this.checkForSystemTimeout(systemTimeoutOptions.onIdle); + break; + } + }); + }); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async openExportVault() { + if (this.modal != null) { + this.modal.close(); + } + + const [modal, childComponent] = await this.modalService.openViewRef( + ExportComponent, + this.exportVaultModalRef + ); + this.modal = modal; + + childComponent.onSaved.subscribe(() => { + this.modal.close(); + }); + + this.modal.onClosed.subscribe(() => { + this.modal = null; + }); + } + + async addFolder() { + if (this.modal != null) { + this.modal.close(); + } + + const [modal, childComponent] = await this.modalService.openViewRef( + FolderAddEditComponent, + this.folderAddEditModalRef, + (comp) => (comp.folderId = null) + ); + this.modal = modal; + + childComponent.onSavedFolder.subscribe(async () => { + this.modal.close(); + this.syncService.fullSync(false); + }); + + this.modal.onClosed.subscribe(() => { + this.modal = null; + }); + } + + async openGenerator() { + if (this.modal != null) { + this.modal.close(); + } + + [this.modal] = await this.modalService.openViewRef( + GeneratorComponent, + this.generatorModalRef, + (comp) => (comp.comingFromAddEdit = false) + ); + + this.modal.onClosed.subscribe(() => { + this.modal = null; + }); + } + + private async updateAppMenu() { + let updateRequest: MenuUpdateRequest; + const stateAccounts = this.stateService.accounts?.getValue(); + if (stateAccounts == null || Object.keys(stateAccounts).length < 1) { + updateRequest = { + accounts: null, + activeUserId: null, + hideChangeMasterPassword: true, + }; + } else { + const accounts: { [userId: string]: any } = {}; + for (const i in stateAccounts) { + if (i != null && stateAccounts[i]?.profile?.userId != null) { + const userId = stateAccounts[i].profile.userId; + accounts[userId] = { + isAuthenticated: await this.stateService.getIsAuthenticated({ + userId: userId, + }), + isLocked: + (await this.authService.getAuthStatus(userId)) === AuthenticationStatus.Locked, + email: stateAccounts[i].profile.email, + userId: stateAccounts[i].profile.userId, + }; + } + } + updateRequest = { + accounts: accounts, + activeUserId: await this.stateService.getUserId(), + hideChangeMasterPassword: await this.keyConnectorService.getUsesKeyConnector(), + }; + } + + this.messagingService.send("updateAppMenu", { updateRequest: updateRequest }); + } + + private async logOut(expired: boolean, userId?: string) { + const userBeingLoggedOut = await this.stateService.getUserId({ userId: userId }); + await Promise.all([ + this.eventService.uploadEvents(userBeingLoggedOut), + this.syncService.setLastSync(new Date(0), userBeingLoggedOut), + this.cryptoService.clearKeys(userBeingLoggedOut), + this.settingsService.clear(userBeingLoggedOut), + this.cipherService.clear(userBeingLoggedOut), + this.folderService.clear(userBeingLoggedOut), + this.collectionService.clear(userBeingLoggedOut), + this.passwordGenerationService.clear(userBeingLoggedOut), + this.vaultTimeoutService.clear(userBeingLoggedOut), + this.policyService.clear(userBeingLoggedOut), + this.keyConnectorService.clear(), + ]); + + await this.stateService.setBiometricLocked(true, { userId: userBeingLoggedOut }); + + if (userBeingLoggedOut === this.activeUserId) { + this.searchService.clearIndex(); + this.authService.logOut(async () => { + if (expired) { + this.platformUtilsService.showToast( + "warning", + this.i18nService.t("loggedOut"), + this.i18nService.t("loginExpired") + ); + } + }); + } + + const preLogoutActiveUserId = this.activeUserId; + await this.stateService.clean({ userId: userBeingLoggedOut }); + + if (this.activeUserId == null) { + this.router.navigate(["login"]); + } else if (preLogoutActiveUserId !== this.activeUserId) { + this.messagingService.send("switchAccount"); + } + + await this.updateAppMenu(); + } + + private async recordActivity() { + if (this.activeUserId == null) { + return; + } + + const now = new Date().getTime(); + if (this.lastActivity != null && now - this.lastActivity < 250) { + return; + } + + this.lastActivity = now; + await this.stateService.setLastActive(now, { userId: this.activeUserId }); + + // Idle states + if (this.isIdle) { + this.isIdle = false; + this.idleStateChanged(); + } + if (this.idleTimer != null) { + window.clearTimeout(this.idleTimer); + this.idleTimer = null; + } + this.idleTimer = window.setTimeout(() => { + if (!this.isIdle) { + this.isIdle = true; + this.idleStateChanged(); + } + }, IdleTimeout); + } + + private idleStateChanged() { + if (this.isIdle) { + this.notificationsService.disconnectFromInactivity(); + } else { + this.notificationsService.reconnectFromActivity(); + } + } + + private async openModal(type: Type, ref: ViewContainerRef) { + if (this.modal != null) { + this.modal.close(); + } + + [this.modal] = await this.modalService.openViewRef(type, ref); + + this.modal.onClosed.subscribe(() => { + this.modal = null; + }); + } + + private showToast(msg: any) { + let message = ""; + + const options: Partial = {}; + + if (typeof msg.text === "string") { + message = msg.text; + } else if (msg.text.length === 1) { + message = msg.text[0]; + } else { + msg.text.forEach( + (t: string) => + (message += "

" + this.sanitizer.sanitize(SecurityContext.HTML, t) + "

") + ); + options.enableHtml = true; + } + if (msg.options != null) { + if (msg.options.trustedHtml === true) { + options.enableHtml = true; + } + if (msg.options.timeout != null && msg.options.timeout > 0) { + options.timeOut = msg.options.timeout; + } + } + + this.toastrService.show(message, msg.title, options, "toast-" + msg.type); + } + + private routeToVault(action: string, cipherType: CipherType) { + if (!this.router.url.includes("vault")) { + this.router.navigate(["/vault"], { + queryParams: { + action: action, + addType: cipherType, + }, + replaceUrl: true, + }); + } + } + + private async reloadProcess(): Promise { + const accounts = this.stateService.accounts.getValue(); + if (accounts != null) { + const keys = Object.keys(accounts); + if (keys.length > 0) { + for (const userId of keys) { + if ((await this.authService.getAuthStatus(userId)) === AuthenticationStatus.Unlocked) { + return; + } + } + } + } + await this.systemService.startProcessReload(); + } + + private async checkForSystemTimeout(timeout: number): Promise { + for (const userId in this.stateService.accounts.getValue()) { + if (userId == null) { + continue; + } + const options = await this.getVaultTimeoutOptions(userId); + if (options[0] === timeout) { + options[1] === "logOut" + ? this.logOut(false, userId) + : await this.vaultTimeoutService.lock(true, userId); + } + } + } + + private async getVaultTimeoutOptions(userId: string): Promise<[number, string]> { + const timeout = await this.stateService.getVaultTimeout({ userId: userId }); + const action = await this.stateService.getVaultTimeoutAction({ userId: userId }); + return [timeout, action]; + } +} diff --git a/apps/desktop/src/app/app.module.ts b/apps/desktop/src/app/app.module.ts new file mode 100644 index 0000000000..29e324cfe0 --- /dev/null +++ b/apps/desktop/src/app/app.module.ts @@ -0,0 +1,224 @@ +import "zone.js/dist/zone"; + +import { A11yModule } from "@angular/cdk/a11y"; +import { DragDropModule } from "@angular/cdk/drag-drop"; +import { OverlayModule } from "@angular/cdk/overlay"; +import { ScrollingModule } from "@angular/cdk/scrolling"; +import { DatePipe, registerLocaleData } from "@angular/common"; +import localeAf from "@angular/common/locales/af"; +import localeAz from "@angular/common/locales/az"; +import localeBe from "@angular/common/locales/be"; +import localeBg from "@angular/common/locales/bg"; +import localeBn from "@angular/common/locales/bn"; +import localeBs from "@angular/common/locales/bs"; +import localeCa from "@angular/common/locales/ca"; +import localeCs from "@angular/common/locales/cs"; +import localeDa from "@angular/common/locales/da"; +import localeDe from "@angular/common/locales/de"; +import localeEl from "@angular/common/locales/el"; +import localeEnGb from "@angular/common/locales/en-GB"; +import localeEnIn from "@angular/common/locales/en-IN"; +import localeEo from "@angular/common/locales/eo"; +import localeEs from "@angular/common/locales/es"; +import localeEt from "@angular/common/locales/et"; +import localeFa from "@angular/common/locales/fa"; +import localeFi from "@angular/common/locales/fi"; +import localeFil from "@angular/common/locales/fil"; +import localeFr from "@angular/common/locales/fr"; +import localeHe from "@angular/common/locales/he"; +import localeHi from "@angular/common/locales/hi"; +import localeHr from "@angular/common/locales/hr"; +import localeHu from "@angular/common/locales/hu"; +import localeId from "@angular/common/locales/id"; +import localeIt from "@angular/common/locales/it"; +import localeJa from "@angular/common/locales/ja"; +import localeKa from "@angular/common/locales/ka"; +import localeKm from "@angular/common/locales/km"; +import localeKn from "@angular/common/locales/kn"; +import localeKo from "@angular/common/locales/ko"; +import localeLv from "@angular/common/locales/lv"; +import localeMl from "@angular/common/locales/ml"; +import localeNb from "@angular/common/locales/nb"; +import localeNl from "@angular/common/locales/nl"; +import localeNn from "@angular/common/locales/nn"; +import localePl from "@angular/common/locales/pl"; +import localePtBr from "@angular/common/locales/pt"; +import localePtPt from "@angular/common/locales/pt-PT"; +import localeRo from "@angular/common/locales/ro"; +import localeRu from "@angular/common/locales/ru"; +import localeSi from "@angular/common/locales/si"; +import localeSk from "@angular/common/locales/sk"; +import localeSl from "@angular/common/locales/sl"; +import localeSr from "@angular/common/locales/sr"; +import localeMe from "@angular/common/locales/sr-Latn-ME"; +import localeSv from "@angular/common/locales/sv"; +import localeTh from "@angular/common/locales/th"; +import localeTr from "@angular/common/locales/tr"; +import localeUk from "@angular/common/locales/uk"; +import localeVi from "@angular/common/locales/vi"; +import localeZhCn from "@angular/common/locales/zh-Hans"; +import localeZhTw from "@angular/common/locales/zh-Hant"; +import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { BrowserModule } from "@angular/platform-browser"; +import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; + +import { JslibModule } from "jslib-angular/jslib.module"; + +import { EnvironmentComponent } from "./accounts/environment.component"; +import { HintComponent } from "./accounts/hint.component"; +import { LockComponent } from "./accounts/lock.component"; +import { LoginComponent } from "./accounts/login.component"; +import { PremiumComponent } from "./accounts/premium.component"; +import { RegisterComponent } from "./accounts/register.component"; +import { RemovePasswordComponent } from "./accounts/remove-password.component"; +import { SetPasswordComponent } from "./accounts/set-password.component"; +import { SettingsComponent } from "./accounts/settings.component"; +import { SsoComponent } from "./accounts/sso.component"; +import { TwoFactorOptionsComponent } from "./accounts/two-factor-options.component"; +import { TwoFactorComponent } from "./accounts/two-factor.component"; +import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component"; +import { VaultTimeoutInputComponent } from "./accounts/vault-timeout-input.component"; +import { AppRoutingModule } from "./app-routing.module"; +import { AppComponent } from "./app.component"; +import { PasswordRepromptComponent } from "./components/password-reprompt.component"; +import { SetPinComponent } from "./components/set-pin.component"; +import { UserVerificationComponent } from "./components/user-verification.component"; +import { AccountSwitcherComponent } from "./layout/account-switcher.component"; +import { HeaderComponent } from "./layout/header.component"; +import { NavComponent } from "./layout/nav.component"; +import { SearchComponent } from "./layout/search/search.component"; +import { AddEditComponent as SendAddEditComponent } from "./send/add-edit.component"; +import { EffluxDatesComponent as SendEffluxDatesComponent } from "./send/efflux-dates.component"; +import { SendComponent } from "./send/send.component"; +import { ServicesModule } from "./services/services.module"; +import { AddEditCustomFieldsComponent } from "./vault/add-edit-custom-fields.component"; +import { AddEditComponent } from "./vault/add-edit.component"; +import { AttachmentsComponent } from "./vault/attachments.component"; +import { CiphersComponent } from "./vault/ciphers.component"; +import { CollectionsComponent } from "./vault/collections.component"; +import { ExportComponent } from "./vault/export.component"; +import { FolderAddEditComponent } from "./vault/folder-add-edit.component"; +import { GeneratorComponent } from "./vault/generator.component"; +import { GroupingsComponent } from "./vault/groupings.component"; +import { PasswordGeneratorHistoryComponent } from "./vault/password-generator-history.component"; +import { PasswordHistoryComponent } from "./vault/password-history.component"; +import { ShareComponent } from "./vault/share.component"; +import { VaultComponent } from "./vault/vault.component"; +import { ViewCustomFieldsComponent } from "./vault/view-custom-fields.component"; +import { ViewComponent } from "./vault/view.component"; + +registerLocaleData(localeAf, "af"); +registerLocaleData(localeAz, "az"); +registerLocaleData(localeBe, "be"); +registerLocaleData(localeBg, "bg"); +registerLocaleData(localeBn, "bn"); +registerLocaleData(localeBs, "bs"); +registerLocaleData(localeCa, "ca"); +registerLocaleData(localeCs, "cs"); +registerLocaleData(localeDa, "da"); +registerLocaleData(localeDe, "de"); +registerLocaleData(localeEl, "el"); +registerLocaleData(localeEnGb, "en-GB"); +registerLocaleData(localeEnIn, "en-IN"); +registerLocaleData(localeEo, "eo"); +registerLocaleData(localeEs, "es"); +registerLocaleData(localeEt, "et"); +registerLocaleData(localeFa, "fa"); +registerLocaleData(localeFi, "fi"); +registerLocaleData(localeFil, "fil"); +registerLocaleData(localeFr, "fr"); +registerLocaleData(localeHe, "he"); +registerLocaleData(localeHi, "hi"); +registerLocaleData(localeHr, "hr"); +registerLocaleData(localeHu, "hu"); +registerLocaleData(localeId, "id"); +registerLocaleData(localeIt, "it"); +registerLocaleData(localeJa, "ja"); +registerLocaleData(localeKa, "ka"); +registerLocaleData(localeKm, "km"); +registerLocaleData(localeKn, "kn"); +registerLocaleData(localeKo, "ko"); +registerLocaleData(localeLv, "lv"); +registerLocaleData(localeMe, "me"); +registerLocaleData(localeMl, "ml"); +registerLocaleData(localeNb, "nb"); +registerLocaleData(localeNl, "nl"); +registerLocaleData(localeNn, "nn"); +registerLocaleData(localePl, "pl"); +registerLocaleData(localePtBr, "pt-BR"); +registerLocaleData(localePtPt, "pt-PT"); +registerLocaleData(localeRo, "ro"); +registerLocaleData(localeRu, "ru"); +registerLocaleData(localeSi, "si"); +registerLocaleData(localeSk, "sk"); +registerLocaleData(localeSl, "sl"); +registerLocaleData(localeSr, "sr"); +registerLocaleData(localeSv, "sv"); +registerLocaleData(localeTh, "th"); +registerLocaleData(localeTr, "tr"); +registerLocaleData(localeUk, "uk"); +registerLocaleData(localeVi, "vi"); +registerLocaleData(localeZhCn, "zh-CN"); +registerLocaleData(localeZhTw, "zh-TW"); + +@NgModule({ + imports: [ + A11yModule, + AppRoutingModule, + BrowserAnimationsModule, + BrowserModule, + DragDropModule, + FormsModule, + JslibModule, + OverlayModule, + ReactiveFormsModule, + ScrollingModule, + ServicesModule, + ], + declarations: [ + AccountSwitcherComponent, + AddEditComponent, + AddEditCustomFieldsComponent, + AppComponent, + AttachmentsComponent, + CiphersComponent, + CollectionsComponent, + EnvironmentComponent, + ExportComponent, + FolderAddEditComponent, + GroupingsComponent, + HeaderComponent, + HintComponent, + LockComponent, + LoginComponent, + NavComponent, + GeneratorComponent, + PasswordGeneratorHistoryComponent, + PasswordHistoryComponent, + PasswordRepromptComponent, + PremiumComponent, + RegisterComponent, + RemovePasswordComponent, + SearchComponent, + SendAddEditComponent, + SendComponent, + SendEffluxDatesComponent, + SetPasswordComponent, + SetPinComponent, + SettingsComponent, + ShareComponent, + SsoComponent, + TwoFactorComponent, + TwoFactorOptionsComponent, + UpdateTempPasswordComponent, + UserVerificationComponent, + VaultComponent, + VaultTimeoutInputComponent, + ViewComponent, + ViewCustomFieldsComponent, + ], + providers: [DatePipe], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/apps/desktop/src/app/components/password-reprompt.component.html b/apps/desktop/src/app/components/password-reprompt.component.html new file mode 100644 index 0000000000..07d9abd8fc --- /dev/null +++ b/apps/desktop/src/app/components/password-reprompt.component.html @@ -0,0 +1,54 @@ + diff --git a/apps/desktop/src/app/components/password-reprompt.component.ts b/apps/desktop/src/app/components/password-reprompt.component.ts new file mode 100644 index 0000000000..442a0ab5ee --- /dev/null +++ b/apps/desktop/src/app/components/password-reprompt.component.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +import { PasswordRepromptComponent as BasePasswordRepromptComponent } from "jslib-angular/components/password-reprompt.component"; + +@Component({ + templateUrl: "password-reprompt.component.html", +}) +export class PasswordRepromptComponent extends BasePasswordRepromptComponent {} diff --git a/apps/desktop/src/app/components/set-pin.component.html b/apps/desktop/src/app/components/set-pin.component.html new file mode 100644 index 0000000000..5bd50bbc35 --- /dev/null +++ b/apps/desktop/src/app/components/set-pin.component.html @@ -0,0 +1,65 @@ + diff --git a/apps/desktop/src/app/components/set-pin.component.ts b/apps/desktop/src/app/components/set-pin.component.ts new file mode 100644 index 0000000000..4497f7e774 --- /dev/null +++ b/apps/desktop/src/app/components/set-pin.component.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +import { SetPinComponent as BaseSetPinComponent } from "jslib-angular/components/set-pin.component"; + +@Component({ + templateUrl: "set-pin.component.html", +}) +export class SetPinComponent extends BaseSetPinComponent {} diff --git a/apps/desktop/src/app/components/user-verification.component.html b/apps/desktop/src/app/components/user-verification.component.html new file mode 100644 index 0000000000..2fd78bb907 --- /dev/null +++ b/apps/desktop/src/app/components/user-verification.component.html @@ -0,0 +1,46 @@ + +
+ + +
+
+ +
+ + + + + {{ "codeSent" | i18n }} + +
+ +
+ + +
+
diff --git a/apps/desktop/src/app/components/user-verification.component.ts b/apps/desktop/src/app/components/user-verification.component.ts new file mode 100644 index 0000000000..dc12c94a78 --- /dev/null +++ b/apps/desktop/src/app/components/user-verification.component.ts @@ -0,0 +1,23 @@ +import { animate, style, transition, trigger } from "@angular/animations"; +import { Component } from "@angular/core"; +import { NG_VALUE_ACCESSOR } from "@angular/forms"; + +import { UserVerificationComponent as BaseComponent } from "jslib-angular/components/user-verification.component"; + +@Component({ + selector: "app-user-verification", + templateUrl: "user-verification.component.html", + providers: [ + { + provide: NG_VALUE_ACCESSOR, + multi: true, + useExisting: UserVerificationComponent, + }, + ], + animations: [ + trigger("sent", [ + transition(":enter", [style({ opacity: 0 }), animate("100ms", style({ opacity: 1 }))]), + ]), + ], +}) +export class UserVerificationComponent extends BaseComponent {} diff --git a/apps/desktop/src/app/layout/account-switcher.component.html b/apps/desktop/src/app/layout/account-switcher.component.html new file mode 100644 index 0000000000..0d52b719c9 --- /dev/null +++ b/apps/desktop/src/app/layout/account-switcher.component.html @@ -0,0 +1,100 @@ + + + + + diff --git a/apps/desktop/src/app/layout/account-switcher.component.ts b/apps/desktop/src/app/layout/account-switcher.component.ts new file mode 100644 index 0000000000..1958bed73c --- /dev/null +++ b/apps/desktop/src/app/layout/account-switcher.component.ts @@ -0,0 +1,135 @@ +import { animate, state, style, transition, trigger } from "@angular/animations"; +import { ConnectedPosition } from "@angular/cdk/overlay"; +import { Component, OnInit } from "@angular/core"; + +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; +import { Utils } from "jslib-common/misc/utils"; +import { Account } from "jslib-common/models/domain/account"; + +export class SwitcherAccount extends Account { + get serverUrl() { + return this.removeWebProtocolFromString( + this.settings?.environmentUrls?.base ?? + this.settings?.environmentUrls.api ?? + "https://bitwarden.com" + ); + } + + private removeWebProtocolFromString(urlString: string) { + const regex = /http(s)?(:)?(\/\/)?|(\/\/)?(www\.)?/g; + return urlString.replace(regex, ""); + } +} + +@Component({ + selector: "app-account-switcher", + templateUrl: "account-switcher.component.html", + animations: [ + trigger("transformPanel", [ + state( + "void", + style({ + opacity: 0, + }) + ), + transition( + "void => open", + animate( + "100ms linear", + style({ + opacity: 1, + }) + ) + ), + transition("* => void", animate("100ms linear", style({ opacity: 0 }))), + ]), + ], +}) +export class AccountSwitcherComponent implements OnInit { + isOpen = false; + accounts: { [userId: string]: SwitcherAccount } = {}; + activeAccountEmail: string; + serverUrl: string; + authStatus = AuthenticationStatus; + overlayPostition: ConnectedPosition[] = [ + { + originX: "end", + originY: "bottom", + overlayX: "end", + overlayY: "top", + }, + ]; + + get showSwitcher() { + const userIsInAVault = !Utils.isNullOrWhitespace(this.activeAccountEmail); + const userIsAddingAnAdditionalAccount = Object.keys(this.accounts).length > 0; + return userIsInAVault || userIsAddingAnAdditionalAccount; + } + + get numberOfAccounts() { + if (this.accounts == null) { + this.isOpen = false; + return 0; + } + return Object.keys(this.accounts).length; + } + + constructor( + private stateService: StateService, + private authService: AuthService, + private messagingService: MessagingService + ) {} + + async ngOnInit(): Promise { + this.stateService.accounts.subscribe(async (accounts: { [userId: string]: Account }) => { + for (const userId in accounts) { + accounts[userId].profile.authenticationStatus = await this.authService.getAuthStatus( + userId + ); + } + + this.accounts = await this.createSwitcherAccounts(accounts); + this.activeAccountEmail = await this.stateService.getEmail(); + }); + } + + toggle() { + this.isOpen = !this.isOpen; + } + + close() { + this.isOpen = false; + } + + async switch(userId: string) { + this.close(); + + this.messagingService.send("switchAccount", { userId: userId }); + } + + async addAccount() { + this.close(); + await this.stateService.setActiveUser(null); + } + + private async createSwitcherAccounts(baseAccounts: { + [userId: string]: Account; + }): Promise<{ [userId: string]: SwitcherAccount }> { + const switcherAccounts: { [userId: string]: SwitcherAccount } = {}; + for (const userId in baseAccounts) { + if (userId == null || userId === (await this.stateService.getUserId())) { + continue; + } + + // environmentUrls are stored on disk and must be retrieved seperatly from the in memory state offered from subscribing to accounts + baseAccounts[userId].settings.environmentUrls = await this.stateService.getEnvironmentUrls({ + userId: userId, + }); + switcherAccounts[userId] = new SwitcherAccount(baseAccounts[userId]); + } + return switcherAccounts; + } +} diff --git a/apps/desktop/src/app/layout/header.component.html b/apps/desktop/src/app/layout/header.component.html new file mode 100644 index 0000000000..53ce02fb68 --- /dev/null +++ b/apps/desktop/src/app/layout/header.component.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/apps/desktop/src/app/layout/header.component.ts b/apps/desktop/src/app/layout/header.component.ts new file mode 100644 index 0000000000..1cf697ad4e --- /dev/null +++ b/apps/desktop/src/app/layout/header.component.ts @@ -0,0 +1,7 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: "app-header", + templateUrl: "header.component.html", +}) +export class HeaderComponent {} diff --git a/apps/desktop/src/app/layout/nav.component.html b/apps/desktop/src/app/layout/nav.component.html new file mode 100644 index 0000000000..c9b6358481 --- /dev/null +++ b/apps/desktop/src/app/layout/nav.component.html @@ -0,0 +1,13 @@ + + + diff --git a/apps/desktop/src/app/layout/nav.component.ts b/apps/desktop/src/app/layout/nav.component.ts new file mode 100644 index 0000000000..9cbb6172f5 --- /dev/null +++ b/apps/desktop/src/app/layout/nav.component.ts @@ -0,0 +1,24 @@ +import { Component } from "@angular/core"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; + +@Component({ + selector: "app-nav", + templateUrl: "nav.component.html", +}) +export class NavComponent { + items: any[] = [ + { + link: "/vault", + icon: "bwi-lock-f", + label: this.i18nService.translate("myVault"), + }, + { + link: "/send", + icon: "bwi-send-f", + label: "Send", + }, + ]; + + constructor(private i18nService: I18nService) {} +} diff --git a/apps/desktop/src/app/layout/search/search-bar.service.ts b/apps/desktop/src/app/layout/search/search-bar.service.ts new file mode 100644 index 0000000000..340ee3a698 --- /dev/null +++ b/apps/desktop/src/app/layout/search/search-bar.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from "@angular/core"; +import { BehaviorSubject } from "rxjs"; + +export type SearchBarState = { + enabled: boolean; + placeholderText: string; +}; + +@Injectable() +export class SearchBarService { + searchText = new BehaviorSubject(null); + + private _state = { + enabled: false, + placeholderText: "", + }; + + // tslint:disable-next-line:member-ordering + state = new BehaviorSubject(this._state); + + setEnabled(enabled: boolean) { + this._state.enabled = enabled; + this.updateState(); + } + + setPlaceholderText(placeholderText: string) { + this._state.placeholderText = placeholderText; + this.updateState(); + } + + setSearchText(value: string) { + this.searchText.next(value); + } + + private updateState() { + this.state.next(this._state); + } +} diff --git a/apps/desktop/src/app/layout/search/search.component.html b/apps/desktop/src/app/layout/search/search.component.html new file mode 100644 index 0000000000..515385c207 --- /dev/null +++ b/apps/desktop/src/app/layout/search/search.component.html @@ -0,0 +1,11 @@ + diff --git a/apps/desktop/src/app/layout/search/search.component.ts b/apps/desktop/src/app/layout/search/search.component.ts new file mode 100644 index 0000000000..c18ce729c8 --- /dev/null +++ b/apps/desktop/src/app/layout/search/search.component.ts @@ -0,0 +1,23 @@ +import { Component } from "@angular/core"; +import { FormControl } from "@angular/forms"; + +import { SearchBarService, SearchBarState } from "./search-bar.service"; + +@Component({ + selector: "app-search", + templateUrl: "search.component.html", +}) +export class SearchComponent { + state: SearchBarState; + searchText: FormControl = new FormControl(null); + + constructor(private searchBarService: SearchBarService) { + this.searchBarService.state.subscribe((state) => { + this.state = state; + }); + + this.searchText.valueChanges.subscribe((value) => { + this.searchBarService.setSearchText(value); + }); + } +} diff --git a/apps/desktop/src/app/main.ts b/apps/desktop/src/app/main.ts new file mode 100644 index 0000000000..c5ae1b187d --- /dev/null +++ b/apps/desktop/src/app/main.ts @@ -0,0 +1,19 @@ +import { enableProdMode } from "@angular/core"; +import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; + +import { isDev } from "jslib-electron/utils"; + +// tslint:disable-next-line +require("../scss/styles.scss"); + +import { AppModule } from "./app.module"; + +if (!isDev()) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true }); + +// Disable drag and drop to prevent malicious links from executing in the context of the app +document.addEventListener("dragover", (event) => event.preventDefault()); +document.addEventListener("drop", (event) => event.preventDefault()); diff --git a/apps/desktop/src/app/send/add-edit.component.html b/apps/desktop/src/app/send/add-edit.component.html new file mode 100644 index 0000000000..855cd9ca64 --- /dev/null +++ b/apps/desktop/src/app/send/add-edit.component.html @@ -0,0 +1,292 @@ +
+
+
+
+ + {{ "sendDisabledWarning" | i18n }} + + + {{ "sendOptionsPolicyInEffect" | i18n }} + +
+
+
+ {{ title }} +
+
+
+ + +
+
+ +
+ + +
+
+
+ + +
+
+ +
{{ send.file.fileName }} ({{ send.file.sizeName }})
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+
+ +
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+ +
+
+
+ +
+
+
+ {{ "notes" | i18n }} +
+
+
+ +
+
+ +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ {{ "share" | i18n }} +
+
+
+ + +
+
+ + +
+
+
+
+
+ +
diff --git a/apps/desktop/src/app/send/add-edit.component.ts b/apps/desktop/src/app/send/add-edit.component.ts new file mode 100644 index 0000000000..a3e20dc874 --- /dev/null +++ b/apps/desktop/src/app/send/add-edit.component.ts @@ -0,0 +1,62 @@ +import { DatePipe } from "@angular/common"; +import { Component } from "@angular/core"; + +import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/send/add-edit.component"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { SendService } from "jslib-common/abstractions/send.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Component({ + selector: "app-send-add-edit", + templateUrl: "add-edit.component.html", +}) +export class AddEditComponent extends BaseAddEditComponent { + constructor( + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + datePipe: DatePipe, + sendService: SendService, + stateService: StateService, + messagingService: MessagingService, + policyService: PolicyService, + logService: LogService + ) { + super( + i18nService, + platformUtilsService, + environmentService, + datePipe, + sendService, + messagingService, + policyService, + logService, + stateService + ); + } + + async refresh() { + this.password = null; + const send = await this.loadSend(); + this.send = await send.decrypt(); + this.hasPassword = this.send.password != null && this.send.password.trim() !== ""; + } + + cancel() { + this.onCancelled.emit(this.send); + } + + async copyLinkToClipboard(link: string) { + super.copyLinkToClipboard(link); + this.platformUtilsService.showToast( + "success", + null, + this.i18nService.t("valueCopied", this.i18nService.t("sendLink")) + ); + } +} diff --git a/apps/desktop/src/app/send/efflux-dates.component.html b/apps/desktop/src/app/send/efflux-dates.component.html new file mode 100644 index 0000000000..e0fc766b12 --- /dev/null +++ b/apps/desktop/src/app/send/efflux-dates.component.html @@ -0,0 +1,55 @@ + +
+
+
+ + + {{ "deletionDateDesc" | i18n }} +
+
+ + + {{ "deletionDateDesc" | i18n }} +
+
+ + + {{ "expirationDateDesc" | i18n }} +
+
+ + + {{ "expirationDateDesc" | i18n }} +
+
+
+
diff --git a/apps/desktop/src/app/send/efflux-dates.component.ts b/apps/desktop/src/app/send/efflux-dates.component.ts new file mode 100644 index 0000000000..db5281da79 --- /dev/null +++ b/apps/desktop/src/app/send/efflux-dates.component.ts @@ -0,0 +1,38 @@ +import { DatePipe } from "@angular/common"; +import { Component, OnChanges } from "@angular/core"; +import { ControlContainer, NgForm } from "@angular/forms"; + +import { EffluxDatesComponent as BaseEffluxDatesComponent } from "jslib-angular/components/send/efflux-dates.component"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-send-efflux-dates", + templateUrl: "efflux-dates.component.html", + viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], +}) +export class EffluxDatesComponent extends BaseEffluxDatesComponent implements OnChanges { + constructor( + protected i18nService: I18nService, + protected platformUtilsService: PlatformUtilsService, + protected datePipe: DatePipe + ) { + super(i18nService, platformUtilsService, datePipe); + } + + // We reuse the same form on desktop and just swap content, so need to watch these to maintin proper values. + ngOnChanges() { + this.selectedExpirationDatePreset.setValue(0); + this.selectedDeletionDatePreset.setValue(0); + this.defaultDeletionDateTime.setValue( + this.datePipe.transform(new Date(this.initialDeletionDate), "yyyy-MM-ddTHH:mm") + ); + if (this.initialExpirationDate) { + this.defaultExpirationDateTime.setValue( + this.datePipe.transform(new Date(this.initialExpirationDate), "yyyy-MM-ddTHH:mm") + ); + } else { + this.defaultExpirationDateTime.setValue(null); + } + } +} diff --git a/apps/desktop/src/app/send/send.component.html b/apps/desktop/src/app/send/send.component.html new file mode 100644 index 0000000000..a019ca0d42 --- /dev/null +++ b/apps/desktop/src/app/send/send.component.html @@ -0,0 +1,153 @@ +
+
+
+
+

{{ "filters" | i18n }}

+
    +
  • + +
  • +
+

{{ "types" | i18n }}

+
    +
  • + +
  • +
  • + +
  • +
+
+ +
+
+
+
+
+ +
+
+ + + +

{{ "noItemsInList" | i18n }}

+
+
+
+ +
+ + +
diff --git a/apps/desktop/src/app/send/send.component.ts b/apps/desktop/src/app/send/send.component.ts new file mode 100644 index 0000000000..b2ab75dd3a --- /dev/null +++ b/apps/desktop/src/app/send/send.component.ts @@ -0,0 +1,144 @@ +import { Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core"; + +import { SendComponent as BaseSendComponent } from "jslib-angular/components/send/send.component"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { EnvironmentService } from "jslib-common/abstractions/environment.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { SendService } from "jslib-common/abstractions/send.service"; +import { SendView } from "jslib-common/models/view/sendView"; +import { invokeMenu, RendererMenuItem } from "jslib-electron/utils"; + +import { SearchBarService } from "../layout/search/search-bar.service"; + +import { AddEditComponent } from "./add-edit.component"; + +enum Action { + None = "", + Add = "add", + Edit = "edit", +} + +const BroadcasterSubscriptionId = "SendComponent"; + +@Component({ + selector: "app-send", + templateUrl: "send.component.html", +}) +export class SendComponent extends BaseSendComponent implements OnInit, OnDestroy { + @ViewChild(AddEditComponent) addEditComponent: AddEditComponent; + + sendId: string; + action: Action = Action.None; + + constructor( + sendService: SendService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + environmentService: EnvironmentService, + private broadcasterService: BroadcasterService, + ngZone: NgZone, + searchService: SearchService, + policyService: PolicyService, + private searchBarService: SearchBarService, + logService: LogService + ) { + super( + sendService, + i18nService, + platformUtilsService, + environmentService, + ngZone, + searchService, + policyService, + logService + ); + this.searchBarService.searchText.subscribe((searchText) => { + this.searchText = searchText; + this.searchTextChanged(); + }); + } + + async ngOnInit() { + this.searchBarService.setEnabled(true); + this.searchBarService.setPlaceholderText(this.i18nService.t("searchSends")); + + super.ngOnInit(); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + switch (message.command) { + case "syncCompleted": + await this.load(); + break; + } + }); + }); + await this.load(); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + this.searchBarService.setEnabled(false); + } + + addSend() { + this.action = Action.Add; + if (this.addEditComponent != null) { + this.addEditComponent.sendId = null; + this.addEditComponent.send = null; + this.addEditComponent.load(); + } + } + + cancel(s: SendView) { + this.action = Action.None; + this.sendId = null; + } + + async deletedSend(s: SendView) { + await this.refresh(); + this.action = Action.None; + this.sendId = null; + } + + async savedSend(s: SendView) { + await this.refresh(); + this.selectSend(s.id); + } + + async selectSend(sendId: string) { + if (sendId === this.sendId && this.action === Action.Edit) { + return; + } + this.action = Action.Edit; + this.sendId = sendId; + if (this.addEditComponent != null) { + this.addEditComponent.sendId = sendId; + await this.addEditComponent.refresh(); + } + } + + get selectedSendType() { + return this.sends.find((s) => s.id === this.sendId)?.type; + } + + viewSendMenu(send: SendView) { + const menu: RendererMenuItem[] = []; + menu.push({ + label: this.i18nService.t("copyLink"), + click: () => this.copy(send), + }); + menu.push({ + label: this.i18nService.t("delete"), + click: async () => { + await this.delete(send); + await this.deletedSend(send); + }, + }); + + invokeMenu(menu); + } +} diff --git a/apps/desktop/src/app/services/init.service.ts b/apps/desktop/src/app/services/init.service.ts new file mode 100644 index 0000000000..3bc3d49aa9 --- /dev/null +++ b/apps/desktop/src/app/services/init.service.ts @@ -0,0 +1,81 @@ +import { Inject, Injectable } from "@angular/core"; + +import { WINDOW } from "jslib-angular/services/jslib-services.module"; +import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service"; +import { EnvironmentService as EnvironmentServiceAbstraction } from "jslib-common/abstractions/environment.service"; +import { EventService as EventServiceAbstraction } from "jslib-common/abstractions/event.service"; +import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service"; +import { NotificationsService as NotificationsServiceAbstraction } from "jslib-common/abstractions/notifications.service"; +import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "jslib-common/abstractions/platformUtils.service"; +import { StateService as StateServiceAbstraction } from "jslib-common/abstractions/state.service"; +import { SyncService as SyncServiceAbstraction } from "jslib-common/abstractions/sync.service"; +import { TwoFactorService as TwoFactorServiceAbstraction } from "jslib-common/abstractions/twoFactor.service"; +import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "jslib-common/abstractions/vaultTimeout.service"; +import { ThemeType } from "jslib-common/enums/themeType"; +import { ContainerService } from "jslib-common/services/container.service"; +import { EventService } from "jslib-common/services/event.service"; +import { VaultTimeoutService } from "jslib-common/services/vaultTimeout.service"; + +import { I18nService } from "../../services/i18n.service"; +import { NativeMessagingService } from "../../services/nativeMessaging.service"; + +@Injectable() +export class InitService { + constructor( + @Inject(WINDOW) private win: Window, + private environmentService: EnvironmentServiceAbstraction, + private syncService: SyncServiceAbstraction, + private vaultTimeoutService: VaultTimeoutServiceAbstraction, + private i18nService: I18nServiceAbstraction, + private eventService: EventServiceAbstraction, + private twoFactorService: TwoFactorServiceAbstraction, + private notificationsService: NotificationsServiceAbstraction, + private platformUtilsService: PlatformUtilsServiceAbstraction, + private stateService: StateServiceAbstraction, + private cryptoService: CryptoServiceAbstraction, + private nativeMessagingService: NativeMessagingService + ) {} + + init() { + return async () => { + this.nativeMessagingService.init(); + await this.stateService.init(); + await this.environmentService.setUrlsFromStorage(); + this.syncService.fullSync(true); + (this.vaultTimeoutService as VaultTimeoutService).init(true); + const locale = await this.stateService.getLocale(); + await (this.i18nService as I18nService).init(locale); + (this.eventService as EventService).init(true); + this.twoFactorService.init(); + setTimeout(() => this.notificationsService.init(), 3000); + const htmlEl = this.win.document.documentElement; + htmlEl.classList.add("os_" + this.platformUtilsService.getDeviceString()); + + const theme = await this.platformUtilsService.getEffectiveTheme(); + htmlEl.classList.add("theme_" + theme); + this.platformUtilsService.onDefaultSystemThemeChange(async (sysTheme) => { + const bwTheme = await this.stateService.getTheme(); + if (bwTheme == null || bwTheme === ThemeType.System) { + htmlEl.classList.remove("theme_" + ThemeType.Light, "theme_" + ThemeType.Dark); + htmlEl.classList.add("theme_" + sysTheme); + } + }); + + let installAction = null; + const installedVersion = await this.stateService.getInstalledVersion(); + const currentVersion = await this.platformUtilsService.getApplicationVersion(); + if (installedVersion == null) { + installAction = "install"; + } else if (installedVersion !== currentVersion) { + installAction = "update"; + } + + if (installAction != null) { + await this.stateService.setInstalledVersion(currentVersion); + } + + const containerService = new ContainerService(this.cryptoService); + containerService.attachToGlobal(this.win); + }; + } +} diff --git a/apps/desktop/src/app/services/services.module.ts b/apps/desktop/src/app/services/services.module.ts new file mode 100644 index 0000000000..694cc6deb5 --- /dev/null +++ b/apps/desktop/src/app/services/services.module.ts @@ -0,0 +1,135 @@ +import { APP_INITIALIZER, InjectionToken, NgModule } from "@angular/core"; + +import { + JslibServicesModule, + SECURE_STORAGE, + STATE_FACTORY, + STATE_SERVICE_USE_CACHE, + WINDOW, + CLIENT_TYPE, + LOCALES_DIRECTORY, + SYSTEM_LANGUAGE, +} from "jslib-angular/services/jslib-services.module"; +import { BroadcasterService as BroadcasterServiceAbstraction } from "jslib-common/abstractions/broadcaster.service"; +import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service"; +import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "jslib-common/abstractions/cryptoFunction.service"; +import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service"; +import { + LogService, + LogService as LogServiceAbstraction, +} from "jslib-common/abstractions/log.service"; +import { MessagingService as MessagingServiceAbstraction } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService as PasswordRepromptServiceAbstraction } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "jslib-common/abstractions/platformUtils.service"; +import { StateService as StateServiceAbstraction } from "jslib-common/abstractions/state.service"; +import { StateMigrationService as StateMigrationServiceAbstraction } from "jslib-common/abstractions/stateMigration.service"; +import { StorageService as StorageServiceAbstraction } from "jslib-common/abstractions/storage.service"; +import { SystemService as SystemServiceAbstraction } from "jslib-common/abstractions/system.service"; +import { ClientType } from "jslib-common/enums/clientType"; +import { StateFactory } from "jslib-common/factories/stateFactory"; +import { GlobalState } from "jslib-common/models/domain/globalState"; +import { SystemService } from "jslib-common/services/system.service"; +import { ElectronCryptoService } from "jslib-electron/services/electronCrypto.service"; +import { ElectronLogService } from "jslib-electron/services/electronLog.service"; +import { ElectronPlatformUtilsService } from "jslib-electron/services/electronPlatformUtils.service"; +import { ElectronRendererMessagingService } from "jslib-electron/services/electronRendererMessaging.service"; +import { ElectronRendererSecureStorageService } from "jslib-electron/services/electronRendererSecureStorage.service"; +import { ElectronRendererStorageService } from "jslib-electron/services/electronRendererStorage.service"; + +import { Account } from "../../models/account"; +import { I18nService } from "../../services/i18n.service"; +import { LoginGuardService } from "../../services/loginGuard.service"; +import { NativeMessagingService } from "../../services/nativeMessaging.service"; +import { PasswordRepromptService } from "../../services/passwordReprompt.service"; +import { StateService } from "../../services/state.service"; +import { SearchBarService } from "../layout/search/search-bar.service"; + +import { InitService } from "./init.service"; + +const RELOAD_CALLBACK = new InjectionToken<() => any>("RELOAD_CALLBACK"); + +@NgModule({ + imports: [JslibServicesModule], + declarations: [], + providers: [ + InitService, + NativeMessagingService, + SearchBarService, + LoginGuardService, + { + provide: APP_INITIALIZER, + useFactory: (initService: InitService) => initService.init(), + deps: [InitService], + multi: true, + }, + { + provide: STATE_FACTORY, + useValue: new StateFactory(GlobalState, Account), + }, + { + provide: CLIENT_TYPE, + useValue: ClientType.Desktop, + }, + { + provide: RELOAD_CALLBACK, + useValue: null, + }, + { provide: LogServiceAbstraction, useClass: ElectronLogService, deps: [] }, + { + provide: PlatformUtilsServiceAbstraction, + useClass: ElectronPlatformUtilsService, + deps: [ + I18nServiceAbstraction, + MessagingServiceAbstraction, + CLIENT_TYPE, + StateServiceAbstraction, + ], + }, + { + provide: I18nServiceAbstraction, + useClass: I18nService, + deps: [SYSTEM_LANGUAGE, LOCALES_DIRECTORY], + }, + { + provide: MessagingServiceAbstraction, + useClass: ElectronRendererMessagingService, + deps: [BroadcasterServiceAbstraction], + }, + { provide: StorageServiceAbstraction, useClass: ElectronRendererStorageService }, + { provide: SECURE_STORAGE, useClass: ElectronRendererSecureStorageService }, + { + provide: CryptoServiceAbstraction, + useClass: ElectronCryptoService, + deps: [ + CryptoFunctionServiceAbstraction, + PlatformUtilsServiceAbstraction, + LogServiceAbstraction, + StateServiceAbstraction, + ], + }, + { + provide: SystemServiceAbstraction, + useClass: SystemService, + deps: [ + MessagingServiceAbstraction, + PlatformUtilsServiceAbstraction, + RELOAD_CALLBACK, + StateServiceAbstraction, + ], + }, + { provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService }, + { + provide: StateServiceAbstraction, + useClass: StateService, + deps: [ + StorageServiceAbstraction, + SECURE_STORAGE, + LogService, + StateMigrationServiceAbstraction, + STATE_FACTORY, + STATE_SERVICE_USE_CACHE, + ], + }, + ], +}) +export class ServicesModule {} diff --git a/apps/desktop/src/app/vault/add-edit-custom-fields.component.html b/apps/desktop/src/app/vault/add-edit-custom-fields.component.html new file mode 100644 index 0000000000..cf4635c34c --- /dev/null +++ b/apps/desktop/src/app/vault/add-edit-custom-fields.component.html @@ -0,0 +1,118 @@ +
+
+ {{ "customFields" | i18n }} +
+
+
+
+ + + +
+ + + + + + + +
+ + +
+ +
+
+ +
+
+
+ +
+ + + +
+
+
diff --git a/apps/desktop/src/app/vault/add-edit-custom-fields.component.ts b/apps/desktop/src/app/vault/add-edit-custom-fields.component.ts new file mode 100644 index 0000000000..5ce773e014 --- /dev/null +++ b/apps/desktop/src/app/vault/add-edit-custom-fields.component.ts @@ -0,0 +1,15 @@ +import { Component } from "@angular/core"; + +import { AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent } from "jslib-angular/components/add-edit-custom-fields.component"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; + +@Component({ + selector: "app-vault-add-edit-custom-fields", + templateUrl: "add-edit-custom-fields.component.html", +}) +export class AddEditCustomFieldsComponent extends BaseAddEditCustomFieldsComponent { + constructor(i18nService: I18nService, eventService: EventService) { + super(i18nService, eventService); + } +} diff --git a/apps/desktop/src/app/vault/add-edit.component.html b/apps/desktop/src/app/vault/add-edit.component.html new file mode 100644 index 0000000000..6f78e0ceba --- /dev/null +++ b/apps/desktop/src/app/vault/add-edit.component.html @@ -0,0 +1,611 @@ +
+
+
+
+ + {{ "personalOwnershipPolicyInEffect" | i18n }} + +
+ {{ title }} +
+
+
+ + +
+
+ + +
+ +
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ + + +
+
+
+ + +
+
+ +
+
+ + +
+
+
+ + +
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ +
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ +
+ +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+
+
+ +
+
+
+ +
+
+
+ + +
+
+ {{ "ownership" | i18n }} +
+
+
+ + +
+
+
+
+
+ {{ "collections" | i18n }} +
+
+ {{ "noCollectionsInList" | i18n }} +
+
+
+ + +
+
+
+
+
+ +
diff --git a/apps/desktop/src/app/vault/add-edit.component.ts b/apps/desktop/src/app/vault/add-edit.component.ts new file mode 100644 index 0000000000..7205986144 --- /dev/null +++ b/apps/desktop/src/app/vault/add-edit.component.ts @@ -0,0 +1,124 @@ +import { Component, NgZone, OnChanges, OnDestroy, ViewChild } from "@angular/core"; +import { NgForm } from "@angular/forms"; + +import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component"; +import { AuditService } from "jslib-common/abstractions/audit.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +const BroadcasterSubscriptionId = "AddEditComponent"; + +@Component({ + selector: "app-vault-add-edit", + templateUrl: "add-edit.component.html", +}) +export class AddEditComponent extends BaseAddEditComponent implements OnChanges, OnDestroy { + @ViewChild("form") + private form: NgForm; + constructor( + cipherService: CipherService, + folderService: FolderService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + stateService: StateService, + collectionService: CollectionService, + messagingService: MessagingService, + eventService: EventService, + policyService: PolicyService, + passwordRepromptService: PasswordRepromptService, + private broadcasterService: BroadcasterService, + private ngZone: NgZone, + logService: LogService, + organizationService: OrganizationService + ) { + super( + cipherService, + folderService, + i18nService, + platformUtilsService, + auditService, + stateService, + collectionService, + messagingService, + eventService, + policyService, + logService, + passwordRepromptService, + organizationService + ); + } + + async ngOnInit() { + this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { + this.ngZone.run(() => { + switch (message.command) { + case "windowHidden": + this.onWindowHidden(); + break; + default: + } + }); + }); + // We use ngOnChanges for everything else instead. + } + + async ngOnChanges() { + await super.init(); + await this.load(); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async load() { + if ( + document.querySelectorAll("app-vault-add-edit .ng-dirty").length === 0 || + (this.cipher != null && this.cipherId !== this.cipher.id) + ) { + this.cipher = null; + } + super.load(); + } + + onWindowHidden() { + this.showPassword = false; + this.showCardNumber = false; + this.showCardCode = false; + if (this.cipher !== null && this.cipher.hasFields) { + this.cipher.fields.forEach((field) => { + field.showValue = false; + }); + } + } + + allowOwnershipOptions(): boolean { + return ( + (!this.editMode || this.cloneMode) && + this.ownershipOptions && + (this.ownershipOptions.length > 1 || !this.allowPersonal) + ); + } + + markPasswordAsDirty() { + this.form.controls["Login.Password"].markAsDirty(); + } + + openHelpReprompt() { + this.platformUtilsService.launchUri( + "https://bitwarden.com/help/managing-items/#protect-individual-items" + ); + } +} diff --git a/apps/desktop/src/app/vault/attachments.component.html b/apps/desktop/src/app/vault/attachments.component.html new file mode 100644 index 0000000000..5981b2b62b --- /dev/null +++ b/apps/desktop/src/app/vault/attachments.component.html @@ -0,0 +1,78 @@ + diff --git a/apps/desktop/src/app/vault/attachments.component.ts b/apps/desktop/src/app/vault/attachments.component.ts new file mode 100644 index 0000000000..660e0a6f3a --- /dev/null +++ b/apps/desktop/src/app/vault/attachments.component.ts @@ -0,0 +1,37 @@ +import { Component } from "@angular/core"; + +import { AttachmentsComponent as BaseAttachmentsComponent } from "jslib-angular/components/attachments.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Component({ + selector: "app-vault-attachments", + templateUrl: "attachments.component.html", +}) +export class AttachmentsComponent extends BaseAttachmentsComponent { + constructor( + cipherService: CipherService, + i18nService: I18nService, + cryptoService: CryptoService, + platformUtilsService: PlatformUtilsService, + apiService: ApiService, + logService: LogService, + stateService: StateService + ) { + super( + cipherService, + i18nService, + cryptoService, + platformUtilsService, + apiService, + window, + logService, + stateService + ); + } +} diff --git a/apps/desktop/src/app/vault/ciphers.component.html b/apps/desktop/src/app/vault/ciphers.component.html new file mode 100644 index 0000000000..fe153dda53 --- /dev/null +++ b/apps/desktop/src/app/vault/ciphers.component.html @@ -0,0 +1,65 @@ +
+ +
+ +
+
+
+ + + +

{{ "noItemsInList" | i18n }}

+ +
+
+
+ diff --git a/apps/desktop/src/app/vault/ciphers.component.ts b/apps/desktop/src/app/vault/ciphers.component.ts new file mode 100644 index 0000000000..438ffab817 --- /dev/null +++ b/apps/desktop/src/app/vault/ciphers.component.ts @@ -0,0 +1,26 @@ +import { Component } from "@angular/core"; + +import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component"; +import { SearchService } from "jslib-common/abstractions/search.service"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +import { SearchBarService } from "../layout/search/search-bar.service"; + +@Component({ + selector: "app-vault-ciphers", + templateUrl: "ciphers.component.html", +}) +export class CiphersComponent extends BaseCiphersComponent { + constructor(searchService: SearchService, searchBarService: SearchBarService) { + super(searchService); + + searchBarService.searchText.subscribe((searchText) => { + this.searchText = searchText; + this.search(200); + }); + } + + trackByFn(index: number, c: CipherView) { + return c.id; + } +} diff --git a/apps/desktop/src/app/vault/collections.component.html b/apps/desktop/src/app/vault/collections.component.html new file mode 100644 index 0000000000..acdc5ea0a9 --- /dev/null +++ b/apps/desktop/src/app/vault/collections.component.html @@ -0,0 +1,51 @@ + diff --git a/apps/desktop/src/app/vault/collections.component.ts b/apps/desktop/src/app/vault/collections.component.ts new file mode 100644 index 0000000000..2ae20bd53e --- /dev/null +++ b/apps/desktop/src/app/vault/collections.component.ts @@ -0,0 +1,24 @@ +import { Component } from "@angular/core"; + +import { CollectionsComponent as BaseCollectionsComponent } from "jslib-angular/components/collections.component"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-vault-collections", + templateUrl: "collections.component.html", +}) +export class CollectionsComponent extends BaseCollectionsComponent { + constructor( + cipherService: CipherService, + i18nService: I18nService, + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + logService: LogService + ) { + super(collectionService, platformUtilsService, i18nService, cipherService, logService); + } +} diff --git a/apps/desktop/src/app/vault/export.component.html b/apps/desktop/src/app/vault/export.component.html new file mode 100644 index 0000000000..09e21b063d --- /dev/null +++ b/apps/desktop/src/app/vault/export.component.html @@ -0,0 +1,45 @@ + diff --git a/apps/desktop/src/app/vault/export.component.ts b/apps/desktop/src/app/vault/export.component.ts new file mode 100644 index 0000000000..1da90e662a --- /dev/null +++ b/apps/desktop/src/app/vault/export.component.ts @@ -0,0 +1,77 @@ +import * as os from "os"; + +import { Component, OnInit } from "@angular/core"; +import { FormBuilder } from "@angular/forms"; + +import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { ExportService } from "jslib-common/abstractions/export.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { PolicyService } from "jslib-common/abstractions/policy.service"; +import { UserVerificationService } from "jslib-common/abstractions/userVerification.service"; + +const BroadcasterSubscriptionId = "ExportComponent"; + +@Component({ + selector: "app-export", + templateUrl: "export.component.html", +}) +export class ExportComponent extends BaseExportComponent implements OnInit { + constructor( + cryptoService: CryptoService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + exportService: ExportService, + eventService: EventService, + policyService: PolicyService, + userVerificationService: UserVerificationService, + formBuilder: FormBuilder, + private broadcasterService: BroadcasterService, + logService: LogService + ) { + super( + cryptoService, + i18nService, + platformUtilsService, + exportService, + eventService, + policyService, + window, + logService, + userVerificationService, + formBuilder + ); + } + + ngOnDestroy() { + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async warningDialog() { + if (this.encryptedFormat) { + return await this.platformUtilsService.showDialog( + this.i18nService.t("encExportKeyWarningDesc") + + os.EOL + + os.EOL + + this.i18nService.t("encExportAccountWarningDesc"), + this.i18nService.t("confirmVaultExport"), + this.i18nService.t("exportVault"), + this.i18nService.t("cancel"), + "warning", + true + ); + } else { + return await this.platformUtilsService.showDialog( + this.i18nService.t("exportWarningDesc"), + this.i18nService.t("confirmVaultExport"), + this.i18nService.t("exportVault"), + this.i18nService.t("cancel"), + "warning" + ); + } + } +} diff --git a/apps/desktop/src/app/vault/folder-add-edit.component.html b/apps/desktop/src/app/vault/folder-add-edit.component.html new file mode 100644 index 0000000000..6457b223c0 --- /dev/null +++ b/apps/desktop/src/app/vault/folder-add-edit.component.html @@ -0,0 +1,68 @@ + diff --git a/apps/desktop/src/app/vault/folder-add-edit.component.ts b/apps/desktop/src/app/vault/folder-add-edit.component.ts new file mode 100644 index 0000000000..a65f3f0226 --- /dev/null +++ b/apps/desktop/src/app/vault/folder-add-edit.component.ts @@ -0,0 +1,22 @@ +import { Component } from "@angular/core"; + +import { FolderAddEditComponent as BaseFolderAddEditComponent } from "jslib-angular/components/folder-add-edit.component"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-folder-add-edit", + templateUrl: "folder-add-edit.component.html", +}) +export class FolderAddEditComponent extends BaseFolderAddEditComponent { + constructor( + folderService: FolderService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + logService: LogService + ) { + super(folderService, i18nService, platformUtilsService, logService); + } +} diff --git a/apps/desktop/src/app/vault/generator.component.html b/apps/desktop/src/app/vault/generator.component.html new file mode 100644 index 0000000000..6d530e59f0 --- /dev/null +++ b/apps/desktop/src/app/vault/generator.component.html @@ -0,0 +1,570 @@ + diff --git a/apps/desktop/src/app/vault/generator.component.ts b/apps/desktop/src/app/vault/generator.component.ts new file mode 100644 index 0000000000..471fd971af --- /dev/null +++ b/apps/desktop/src/app/vault/generator.component.ts @@ -0,0 +1,41 @@ +import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; + +import { GeneratorComponent as BaseGeneratorComponent } from "jslib-angular/components/generator.component"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { UsernameGenerationService } from "jslib-common/abstractions/usernameGeneration.service"; + +@Component({ + selector: "app-generator", + templateUrl: "generator.component.html", +}) +export class GeneratorComponent extends BaseGeneratorComponent { + constructor( + passwordGenerationService: PasswordGenerationService, + usernameGenerationService: UsernameGenerationService, + stateService: StateService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService, + route: ActivatedRoute, + logService: LogService + ) { + super( + passwordGenerationService, + usernameGenerationService, + platformUtilsService, + stateService, + i18nService, + logService, + route, + window + ); + } + + usernameTypesLearnMore() { + this.platformUtilsService.launchUri("https://bitwarden.com/help/generator/#username-types"); + } +} diff --git a/apps/desktop/src/app/vault/groupings.component.html b/apps/desktop/src/app/vault/groupings.component.html new file mode 100644 index 0000000000..9d878295a1 --- /dev/null +++ b/apps/desktop/src/app/vault/groupings.component.html @@ -0,0 +1,190 @@ +
+
+

{{ "filters" | i18n }}

+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+

{{ "types" | i18n }}

+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+

{{ "loading" | i18n }}

+ +
+

{{ "folders" | i18n }}

+ +
+
    + +
  • + +
      + + +
    +
  • +
    + +
+
+

{{ "collections" | i18n }}

+
    + +
  • + +
      + + +
    +
  • +
    + + +
+
+
+
+ +
diff --git a/apps/desktop/src/app/vault/groupings.component.ts b/apps/desktop/src/app/vault/groupings.component.ts new file mode 100644 index 0000000000..12bc2859e1 --- /dev/null +++ b/apps/desktop/src/app/vault/groupings.component.ts @@ -0,0 +1,20 @@ +import { Component } from "@angular/core"; + +import { GroupingsComponent as BaseGroupingsComponent } from "jslib-angular/components/groupings.component"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { FolderService } from "jslib-common/abstractions/folder.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +@Component({ + selector: "app-vault-groupings", + templateUrl: "groupings.component.html", +}) +export class GroupingsComponent extends BaseGroupingsComponent { + constructor( + collectionService: CollectionService, + folderService: FolderService, + stateService: StateService + ) { + super(collectionService, folderService, stateService); + } +} diff --git a/apps/desktop/src/app/vault/password-generator-history.component.html b/apps/desktop/src/app/vault/password-generator-history.component.html new file mode 100644 index 0000000000..8bef68a689 --- /dev/null +++ b/apps/desktop/src/app/vault/password-generator-history.component.html @@ -0,0 +1,52 @@ + diff --git a/apps/desktop/src/app/vault/password-generator-history.component.ts b/apps/desktop/src/app/vault/password-generator-history.component.ts new file mode 100644 index 0000000000..d7f344365f --- /dev/null +++ b/apps/desktop/src/app/vault/password-generator-history.component.ts @@ -0,0 +1,20 @@ +import { Component } from "@angular/core"; + +import { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from "jslib-angular/components/password-generator-history.component"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-password-generator-history", + templateUrl: "password-generator-history.component.html", +}) +export class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent { + constructor( + passwordGenerationService: PasswordGenerationService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService + ) { + super(passwordGenerationService, platformUtilsService, i18nService, window); + } +} diff --git a/apps/desktop/src/app/vault/password-history.component.html b/apps/desktop/src/app/vault/password-history.component.html new file mode 100644 index 0000000000..633cee14c7 --- /dev/null +++ b/apps/desktop/src/app/vault/password-history.component.html @@ -0,0 +1,40 @@ + diff --git a/apps/desktop/src/app/vault/password-history.component.ts b/apps/desktop/src/app/vault/password-history.component.ts new file mode 100644 index 0000000000..06d5158e92 --- /dev/null +++ b/apps/desktop/src/app/vault/password-history.component.ts @@ -0,0 +1,20 @@ +import { Component } from "@angular/core"; + +import { PasswordHistoryComponent as BasePasswordHistoryComponent } from "jslib-angular/components/password-history.component"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-password-history", + templateUrl: "password-history.component.html", +}) +export class PasswordHistoryComponent extends BasePasswordHistoryComponent { + constructor( + cipherService: CipherService, + platformUtilsService: PlatformUtilsService, + i18nService: I18nService + ) { + super(cipherService, platformUtilsService, i18nService, window); + } +} diff --git a/apps/desktop/src/app/vault/share.component.html b/apps/desktop/src/app/vault/share.component.html new file mode 100644 index 0000000000..0f78ae87e4 --- /dev/null +++ b/apps/desktop/src/app/vault/share.component.html @@ -0,0 +1,78 @@ + diff --git a/apps/desktop/src/app/vault/share.component.ts b/apps/desktop/src/app/vault/share.component.ts new file mode 100644 index 0000000000..ebab6fc81c --- /dev/null +++ b/apps/desktop/src/app/vault/share.component.ts @@ -0,0 +1,33 @@ +import { Component } from "@angular/core"; + +import { ShareComponent as BaseShareComponent } from "jslib-angular/components/share.component"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CollectionService } from "jslib-common/abstractions/collection.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { OrganizationService } from "jslib-common/abstractions/organization.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; + +@Component({ + selector: "app-vault-share", + templateUrl: "share.component.html", +}) +export class ShareComponent extends BaseShareComponent { + constructor( + cipherService: CipherService, + i18nService: I18nService, + collectionService: CollectionService, + platformUtilsService: PlatformUtilsService, + logService: LogService, + organizationService: OrganizationService + ) { + super( + collectionService, + platformUtilsService, + i18nService, + cipherService, + logService, + organizationService + ); + } +} diff --git a/apps/desktop/src/app/vault/vault.component.html b/apps/desktop/src/app/vault/vault.component.html new file mode 100644 index 0000000000..56e868f668 --- /dev/null +++ b/apps/desktop/src/app/vault/vault.component.html @@ -0,0 +1,74 @@ +
+ + + + + + + + + +
+ + + + + + diff --git a/apps/desktop/src/app/vault/vault.component.ts b/apps/desktop/src/app/vault/vault.component.ts new file mode 100644 index 0000000000..a6f6f9b834 --- /dev/null +++ b/apps/desktop/src/app/vault/vault.component.ts @@ -0,0 +1,786 @@ +import { + ChangeDetectorRef, + Component, + NgZone, + OnDestroy, + OnInit, + ViewChild, + ViewContainerRef, +} from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { first } from "rxjs/operators"; + +import { ModalRef } from "jslib-angular/components/modal/modal.ref"; +import { ModalService } from "jslib-angular/services/modal.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType"; +import { CipherType } from "jslib-common/enums/cipherType"; +import { EventType } from "jslib-common/enums/eventType"; +import { CipherView } from "jslib-common/models/view/cipherView"; +import { FolderView } from "jslib-common/models/view/folderView"; +import { invokeMenu, RendererMenuItem } from "jslib-electron/utils"; + +import { SearchBarService } from "../layout/search/search-bar.service"; + +import { AddEditComponent } from "./add-edit.component"; +import { AttachmentsComponent } from "./attachments.component"; +import { CiphersComponent } from "./ciphers.component"; +import { CollectionsComponent } from "./collections.component"; +import { FolderAddEditComponent } from "./folder-add-edit.component"; +import { GeneratorComponent } from "./generator.component"; +import { GroupingsComponent } from "./groupings.component"; +import { PasswordHistoryComponent } from "./password-history.component"; +import { ShareComponent } from "./share.component"; +import { ViewComponent } from "./view.component"; + +const BroadcasterSubscriptionId = "VaultComponent"; + +@Component({ + selector: "app-vault", + templateUrl: "vault.component.html", +}) +export class VaultComponent implements OnInit, OnDestroy { + @ViewChild(ViewComponent) viewComponent: ViewComponent; + @ViewChild(AddEditComponent) addEditComponent: AddEditComponent; + @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent; + @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent; + @ViewChild("generator", { read: ViewContainerRef, static: true }) + generatorModalRef: ViewContainerRef; + @ViewChild("attachments", { read: ViewContainerRef, static: true }) + attachmentsModalRef: ViewContainerRef; + @ViewChild("passwordHistory", { read: ViewContainerRef, static: true }) + passwordHistoryModalRef: ViewContainerRef; + @ViewChild("share", { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef; + @ViewChild("collections", { read: ViewContainerRef, static: true }) + collectionsModalRef: ViewContainerRef; + @ViewChild("folderAddEdit", { read: ViewContainerRef, static: true }) + folderAddEditModalRef: ViewContainerRef; + + action: string; + cipherId: string = null; + favorites = false; + type: CipherType = null; + folderId: string = null; + collectionId: string = null; + addType: CipherType = null; + addOrganizationId: string = null; + addCollectionIds: string[] = null; + showingModal = false; + deleted = false; + userHasPremiumAccess = false; + + private modal: ModalRef = null; + + constructor( + private route: ActivatedRoute, + private router: Router, + private i18nService: I18nService, + private modalService: ModalService, + private broadcasterService: BroadcasterService, + private changeDetectorRef: ChangeDetectorRef, + private ngZone: NgZone, + private syncService: SyncService, + private messagingService: MessagingService, + private platformUtilsService: PlatformUtilsService, + private eventService: EventService, + private totpService: TotpService, + private passwordRepromptService: PasswordRepromptService, + private stateService: StateService, + private searchBarService: SearchBarService + ) {} + + async ngOnInit() { + this.userHasPremiumAccess = await this.stateService.getCanAccessPremium(); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(async () => { + let detectChanges = true; + + switch (message.command) { + case "newLogin": + await this.addCipher(CipherType.Login); + break; + case "newCard": + await this.addCipher(CipherType.Card); + break; + case "newIdentity": + await this.addCipher(CipherType.Identity); + break; + case "newSecureNote": + await this.addCipher(CipherType.SecureNote); + break; + case "focusSearch": + (document.querySelector("#search") as HTMLInputElement).select(); + detectChanges = false; + break; + case "openGenerator": + await this.openGenerator(false); + break; + case "syncCompleted": + await this.load(); + break; + case "refreshCiphers": + this.ciphersComponent.refresh(); + break; + case "modalShown": + this.showingModal = true; + break; + case "modalClosed": + this.showingModal = false; + break; + case "copyUsername": { + const uComponent = + this.addEditComponent == null ? this.viewComponent : this.addEditComponent; + const uCipher = uComponent != null ? uComponent.cipher : null; + if ( + this.cipherId != null && + uCipher != null && + uCipher.id === this.cipherId && + uCipher.login != null && + uCipher.login.username != null + ) { + this.copyValue(uCipher, uCipher.login.username, "username", "Username"); + } + break; + } + case "copyPassword": { + const pComponent = + this.addEditComponent == null ? this.viewComponent : this.addEditComponent; + const pCipher = pComponent != null ? pComponent.cipher : null; + if ( + this.cipherId != null && + pCipher != null && + pCipher.id === this.cipherId && + pCipher.login != null && + pCipher.login.password != null && + pCipher.viewPassword + ) { + this.copyValue(pCipher, pCipher.login.password, "password", "Password"); + } + break; + } + case "copyTotp": { + const tComponent = + this.addEditComponent == null ? this.viewComponent : this.addEditComponent; + const tCipher = tComponent != null ? tComponent.cipher : null; + if ( + this.cipherId != null && + tCipher != null && + tCipher.id === this.cipherId && + tCipher.login != null && + tCipher.login.hasTotp && + this.userHasPremiumAccess + ) { + const value = await this.totpService.getCode(tCipher.login.totp); + this.copyValue(tCipher, value, "verificationCodeTotp", "TOTP"); + } + break; + } + default: + detectChanges = false; + break; + } + + if (detectChanges) { + this.changeDetectorRef.detectChanges(); + } + }); + }); + + if (!this.syncService.syncInProgress) { + await this.load(); + } + document.body.classList.remove("layout_frontend"); + + this.searchBarService.setEnabled(true); + this.searchBarService.setPlaceholderText(this.i18nService.t("searchVault")); + } + + ngOnDestroy() { + this.searchBarService.setEnabled(false); + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + document.body.classList.add("layout_frontend"); + } + + async load() { + this.route.queryParams.pipe(first()).subscribe(async (params) => { + await this.groupingsComponent.load(); + + if (params == null) { + this.groupingsComponent.selectedAll = true; + await this.ciphersComponent.reload(); + } else { + if (params.cipherId) { + const cipherView = new CipherView(); + cipherView.id = params.cipherId; + if (params.action === "clone") { + await this.cloneCipher(cipherView); + } else if (params.action === "edit") { + await this.editCipher(cipherView); + } else { + await this.viewCipher(cipherView); + } + } else if (params.action === "add") { + this.addType = Number(params.addType); + this.addCipher(this.addType); + } + + if (params.deleted) { + this.groupingsComponent.selectedTrash = true; + await this.filterDeleted(); + } else if (params.favorites) { + this.groupingsComponent.selectedFavorites = true; + await this.filterFavorites(); + } else if (params.type && params.action !== "add") { + const t = parseInt(params.type, null); + this.groupingsComponent.selectedType = t; + await this.filterCipherType(t); + } else if (params.folderId) { + this.groupingsComponent.selectedFolder = true; + this.groupingsComponent.selectedFolderId = params.folderId; + await this.filterFolder(params.folderId); + } else if (params.collectionId) { + this.groupingsComponent.selectedCollectionId = params.collectionId; + await this.filterCollection(params.collectionId); + } else { + this.groupingsComponent.selectedAll = true; + await this.ciphersComponent.reload(); + } + } + }); + } + + async viewCipher(cipher: CipherView) { + if (!(await this.canNavigateAway("view", cipher))) { + return; + } + + this.cipherId = cipher.id; + this.action = "view"; + this.go(); + } + + viewCipherMenu(cipher: CipherView) { + const menu: RendererMenuItem[] = [ + { + label: this.i18nService.t("view"), + click: () => + this.functionWithChangeDetection(() => { + this.viewCipher(cipher); + }), + }, + ]; + if (!cipher.isDeleted) { + menu.push({ + label: this.i18nService.t("edit"), + click: () => + this.functionWithChangeDetection(() => { + this.editCipher(cipher); + }), + }); + menu.push({ + label: this.i18nService.t("clone"), + click: () => + this.functionWithChangeDetection(() => { + this.cloneCipher(cipher); + }), + }); + } + + switch (cipher.type) { + case CipherType.Login: + if ( + cipher.login.canLaunch || + cipher.login.username != null || + cipher.login.password != null + ) { + menu.push({ type: "separator" }); + } + if (cipher.login.canLaunch) { + menu.push({ + label: this.i18nService.t("launch"), + click: () => this.platformUtilsService.launchUri(cipher.login.launchUri), + }); + } + if (cipher.login.username != null) { + menu.push({ + label: this.i18nService.t("copyUsername"), + click: () => this.copyValue(cipher, cipher.login.username, "username", "Username"), + }); + } + if (cipher.login.password != null && cipher.viewPassword) { + menu.push({ + label: this.i18nService.t("copyPassword"), + click: () => { + this.copyValue(cipher, cipher.login.password, "password", "Password"); + this.eventService.collect(EventType.Cipher_ClientCopiedPassword, cipher.id); + }, + }); + } + if (cipher.login.hasTotp && (cipher.organizationUseTotp || this.userHasPremiumAccess)) { + menu.push({ + label: this.i18nService.t("copyVerificationCodeTotp"), + click: async () => { + const value = await this.totpService.getCode(cipher.login.totp); + this.copyValue(cipher, value, "verificationCodeTotp", "TOTP"); + }, + }); + } + break; + case CipherType.Card: + if (cipher.card.number != null || cipher.card.code != null) { + menu.push({ type: "separator" }); + } + if (cipher.card.number != null) { + menu.push({ + label: this.i18nService.t("copyNumber"), + click: () => this.copyValue(cipher, cipher.card.number, "number", "Card Number"), + }); + } + if (cipher.card.code != null) { + menu.push({ + label: this.i18nService.t("copySecurityCode"), + click: () => { + this.copyValue(cipher, cipher.card.code, "securityCode", "Security Code"); + this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id); + }, + }); + } + break; + default: + break; + } + + invokeMenu(menu); + } + + async editCipher(cipher: CipherView) { + if (!(await this.canNavigateAway("edit", cipher))) { + return; + } else if (!(await this.passwordReprompt(cipher))) { + return; + } + + await this.editCipherWithoutPasswordPrompt(cipher); + } + + async editCipherWithoutPasswordPrompt(cipher: CipherView) { + if (!(await this.canNavigateAway("edit", cipher))) { + return; + } + + this.cipherId = cipher.id; + this.action = "edit"; + this.go(); + } + + async cloneCipher(cipher: CipherView) { + if (!(await this.canNavigateAway("clone", cipher))) { + return; + } else if (!(await this.passwordReprompt(cipher))) { + return; + } + + await this.cloneCipherWithoutPasswordPrompt(cipher); + } + + async cloneCipherWithoutPasswordPrompt(cipher: CipherView) { + if (!(await this.canNavigateAway("edit", cipher))) { + return; + } + + this.cipherId = cipher.id; + this.action = "clone"; + this.go(); + } + + async addCipher(type: CipherType = null) { + if (!(await this.canNavigateAway("add", null))) { + return; + } + + this.addType = type; + this.action = "add"; + this.cipherId = null; + this.updateCollectionProperties(); + this.go(); + } + + addCipherOptions() { + const menu: RendererMenuItem[] = [ + { + label: this.i18nService.t("typeLogin"), + click: () => this.addCipherWithChangeDetection(CipherType.Login), + }, + { + label: this.i18nService.t("typeCard"), + click: () => this.addCipherWithChangeDetection(CipherType.Card), + }, + { + label: this.i18nService.t("typeIdentity"), + click: () => this.addCipherWithChangeDetection(CipherType.Identity), + }, + { + label: this.i18nService.t("typeSecureNote"), + click: () => this.addCipherWithChangeDetection(CipherType.SecureNote), + }, + ]; + + invokeMenu(menu); + } + + async savedCipher(cipher: CipherView) { + this.cipherId = cipher.id; + this.action = "view"; + this.go(); + await this.ciphersComponent.refresh(); + } + + async deletedCipher(cipher: CipherView) { + this.cipherId = null; + this.action = null; + this.go(); + await this.ciphersComponent.refresh(); + } + + async restoredCipher(cipher: CipherView) { + this.cipherId = null; + this.action = null; + this.go(); + await this.ciphersComponent.refresh(); + } + + async editCipherAttachments(cipher: CipherView) { + if (this.modal != null) { + this.modal.close(); + } + + const [modal, childComponent] = await this.modalService.openViewRef( + AttachmentsComponent, + this.attachmentsModalRef, + (comp) => (comp.cipherId = cipher.id) + ); + this.modal = modal; + + let madeAttachmentChanges = false; + childComponent.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true)); + childComponent.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true)); + + this.modal.onClosed.subscribe(async () => { + this.modal = null; + if (madeAttachmentChanges) { + await this.ciphersComponent.refresh(); + } + madeAttachmentChanges = false; + }); + } + + async shareCipher(cipher: CipherView) { + if (this.modal != null) { + this.modal.close(); + } + + const [modal, childComponent] = await this.modalService.openViewRef( + ShareComponent, + this.shareModalRef, + (comp) => (comp.cipherId = cipher.id) + ); + this.modal = modal; + + childComponent.onSharedCipher.subscribe(async () => { + this.modal.close(); + this.viewCipher(cipher); + await this.ciphersComponent.refresh(); + }); + this.modal.onClosed.subscribe(async () => { + this.modal = null; + }); + } + + async cipherCollections(cipher: CipherView) { + if (this.modal != null) { + this.modal.close(); + } + + const [modal, childComponent] = await this.modalService.openViewRef( + CollectionsComponent, + this.collectionsModalRef, + (comp) => (comp.cipherId = cipher.id) + ); + this.modal = modal; + + childComponent.onSavedCollections.subscribe(() => { + this.modal.close(); + this.viewCipher(cipher); + }); + this.modal.onClosed.subscribe(async () => { + this.modal = null; + }); + } + + async viewCipherPasswordHistory(cipher: CipherView) { + if (this.modal != null) { + this.modal.close(); + } + + [this.modal] = await this.modalService.openViewRef( + PasswordHistoryComponent, + this.passwordHistoryModalRef, + (comp) => (comp.cipherId = cipher.id) + ); + + this.modal.onClosed.subscribe(async () => { + this.modal = null; + }); + } + + cancelledAddEdit(cipher: CipherView) { + this.cipherId = cipher.id; + this.action = this.cipherId != null ? "view" : null; + this.go(); + } + + async clearGroupingFilters() { + this.searchBarService.setPlaceholderText(this.i18nService.t("searchVault")); + await this.ciphersComponent.reload(); + this.clearFilters(); + this.go(); + } + + async filterFavorites() { + this.searchBarService.setPlaceholderText(this.i18nService.t("searchFavorites")); + await this.ciphersComponent.reload((c) => c.favorite); + this.clearFilters(); + this.favorites = true; + this.go(); + } + + async filterDeleted() { + this.searchBarService.setPlaceholderText(this.i18nService.t("searchTrash")); + this.ciphersComponent.deleted = true; + await this.ciphersComponent.reload(null, true); + this.clearFilters(); + this.deleted = true; + this.go(); + } + + async filterCipherType(type: CipherType) { + this.searchBarService.setPlaceholderText(this.i18nService.t("searchType")); + await this.ciphersComponent.reload((c) => c.type === type); + this.clearFilters(); + this.type = type; + this.go(); + } + + async filterFolder(folderId: string) { + folderId = folderId === "none" ? null : folderId; + this.searchBarService.setPlaceholderText(this.i18nService.t("searchFolder")); + await this.ciphersComponent.reload((c) => c.folderId === folderId); + this.clearFilters(); + this.folderId = folderId == null ? "none" : folderId; + this.go(); + } + + async filterCollection(collectionId: string) { + this.searchBarService.setPlaceholderText(this.i18nService.t("searchCollection")); + await this.ciphersComponent.reload( + (c) => c.collectionIds != null && c.collectionIds.indexOf(collectionId) > -1 + ); + this.clearFilters(); + this.collectionId = collectionId; + this.updateCollectionProperties(); + this.go(); + } + + async openGenerator(comingFromAddEdit: boolean, passwordType = true) { + if (this.modal != null) { + this.modal.close(); + } + + const cipher = this.addEditComponent?.cipher; + const loginType = cipher != null && cipher.type === CipherType.Login && cipher.login != null; + + const [modal, childComponent] = await this.modalService.openViewRef( + GeneratorComponent, + this.generatorModalRef, + (comp) => { + comp.comingFromAddEdit = comingFromAddEdit; + if (comingFromAddEdit) { + comp.type = passwordType ? "password" : "username"; + if (loginType && cipher.login.hasUris && cipher.login.uris[0].hostname != null) { + comp.usernameWebsite = cipher.login.uris[0].hostname; + } + } + } + ); + this.modal = modal; + + childComponent.onSelected.subscribe((value: string) => { + this.modal.close(); + if (loginType) { + this.addEditComponent.markPasswordAsDirty(); + if (passwordType) { + this.addEditComponent.cipher.login.password = value; + } else { + this.addEditComponent.cipher.login.username = value; + } + } + }); + + this.modal.onClosed.subscribe(() => { + this.modal = null; + }); + } + + async addFolder() { + this.messagingService.send("newFolder"); + } + + async editFolder(folderId: string) { + if (this.modal != null) { + this.modal.close(); + } + + const [modal, childComponent] = await this.modalService.openViewRef( + FolderAddEditComponent, + this.folderAddEditModalRef, + (comp) => (comp.folderId = folderId) + ); + this.modal = modal; + + childComponent.onSavedFolder.subscribe(async (folder: FolderView) => { + this.modal.close(); + await this.groupingsComponent.loadFolders(); + }); + childComponent.onDeletedFolder.subscribe(async (folder: FolderView) => { + this.modal.close(); + await this.groupingsComponent.loadFolders(); + }); + + this.modal.onClosed.subscribe(() => { + this.modal = null; + }); + } + + private dirtyInput(): boolean { + return ( + (this.action === "add" || this.action === "edit" || this.action === "clone") && + document.querySelectorAll("app-vault-add-edit .ng-dirty").length > 0 + ); + } + + private async wantsToSaveChanges(): Promise { + const confirmed = await this.platformUtilsService.showDialog( + this.i18nService.t("unsavedChangesConfirmation"), + this.i18nService.t("unsavedChangesTitle"), + this.i18nService.t("yes"), + this.i18nService.t("no"), + "warning" + ); + return !confirmed; + } + + private clearFilters() { + this.folderId = null; + this.collectionId = null; + this.favorites = false; + this.type = null; + this.addCollectionIds = null; + this.addType = null; + this.addOrganizationId = null; + this.deleted = false; + } + + private go(queryParams: any = null) { + if (queryParams == null) { + queryParams = { + action: this.action, + cipherId: this.cipherId, + favorites: this.favorites ? true : null, + type: this.type, + folderId: this.folderId, + collectionId: this.collectionId, + deleted: this.deleted ? true : null, + }; + } + + this.router.navigate([], { + relativeTo: this.route, + queryParams: queryParams, + replaceUrl: true, + }); + } + + private addCipherWithChangeDetection(type: CipherType = null) { + this.functionWithChangeDetection(() => this.addCipher(type)); + } + + private copyValue(cipher: CipherView, value: string, labelI18nKey: string, aType: string) { + this.functionWithChangeDetection(async () => { + if ( + cipher.reprompt !== CipherRepromptType.None && + this.passwordRepromptService.protectedFields().includes(aType) && + !(await this.passwordRepromptService.showPasswordPrompt()) + ) { + return; + } + + this.platformUtilsService.copyToClipboard(value); + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("valueCopied", this.i18nService.t(labelI18nKey)) + ); + if (this.action === "view") { + this.messagingService.send("minimizeOnCopy"); + } + }); + } + + private functionWithChangeDetection(func: () => void) { + this.ngZone.run(() => { + func(); + this.changeDetectorRef.detectChanges(); + }); + } + + private updateCollectionProperties() { + if (this.collectionId != null) { + const collection = this.groupingsComponent.collections.filter( + (c) => c.id === this.collectionId + ); + if (collection.length > 0) { + this.addOrganizationId = collection[0].organizationId; + this.addCollectionIds = [this.collectionId]; + return; + } + } + this.addOrganizationId = null; + this.addCollectionIds = null; + } + + private async canNavigateAway(action: string, cipher?: CipherView) { + // Don't navigate to same route + if (this.action === action && (cipher == null || this.cipherId === cipher.id)) { + return false; + } else if (this.dirtyInput() && (await this.wantsToSaveChanges())) { + return false; + } + + return true; + } + + private async passwordReprompt(cipher: CipherView) { + return ( + cipher.reprompt === CipherRepromptType.None || + (await this.passwordRepromptService.showPasswordPrompt()) + ); + } +} diff --git a/apps/desktop/src/app/vault/view-custom-fields.component.html b/apps/desktop/src/app/vault/view-custom-fields.component.html new file mode 100644 index 0000000000..d1980048eb --- /dev/null +++ b/apps/desktop/src/app/vault/view-custom-fields.component.html @@ -0,0 +1,72 @@ +
+
+ {{ "customFields" | i18n }} +
+
+
+
+ {{ field.name }} +
+ {{ field.value || " " }} +
+
+ + {{ field.maskedValue }} +
+
+ + + {{ field.value }} +
+
+
+ + {{ "linkedValue" | i18n }} +
+ {{ cipher.linkedFieldI18nKey(field.linkedId) | i18n }} +
+
+
+ + +
+
+
+
diff --git a/apps/desktop/src/app/vault/view-custom-fields.component.ts b/apps/desktop/src/app/vault/view-custom-fields.component.ts new file mode 100644 index 0000000000..30046a3110 --- /dev/null +++ b/apps/desktop/src/app/vault/view-custom-fields.component.ts @@ -0,0 +1,14 @@ +import { Component } from "@angular/core"; + +import { ViewCustomFieldsComponent as BaseViewCustomFieldsComponent } from "jslib-angular/components/view-custom-fields.component"; +import { EventService } from "jslib-common/abstractions/event.service"; + +@Component({ + selector: "app-vault-view-custom-fields", + templateUrl: "view-custom-fields.component.html", +}) +export class ViewCustomFieldsComponent extends BaseViewCustomFieldsComponent { + constructor(eventService: EventService) { + super(eventService); + } +} diff --git a/apps/desktop/src/app/vault/view.component.html b/apps/desktop/src/app/vault/view.component.html new file mode 100644 index 0000000000..a033cdd827 --- /dev/null +++ b/apps/desktop/src/app/vault/view.component.html @@ -0,0 +1,412 @@ +
+
+
+
+ {{ "itemInformation" | i18n }} +
+
+
+ {{ "name" | i18n }} + {{ cipher.name }} +
+ +
+
+
+ {{ "username" | i18n }} + {{ cipher.login.username }} +
+
+ +
+
+
+
+ {{ "password" | i18n }} +
+ {{ cipher.login.maskedPassword }} +
+
+
+
+ + + +
+
+
+
+ {{ "verificationCodeTotp" | i18n }} + {{ totpCodeFormatted }} +
+ + {{ totpSec }} + + + + + + + +
+ +
+
+
+ +
+
+ {{ "cardholderName" | i18n }} + {{ cipher.card.cardholderName }} +
+
+
+ {{ "number" | i18n }} + {{ + cipher.card.maskedNumber | creditCardNumber: cipher.card.brand + }} + {{ + cipher.card.number | creditCardNumber: cipher.card.brand + }} +
+
+ + +
+
+
+ {{ "brand" | i18n }} + {{ cipher.card.brand }} +
+
+ {{ "expiration" | i18n }} + {{ cipher.card.expiration }} +
+
+
+ {{ "securityCode" | i18n }} + {{ cipher.card.maskedCode }} + {{ cipher.card.code }} +
+
+ + +
+
+
+ +
+
+ {{ "identityName" | i18n }} + {{ cipher.identity.fullName }} +
+
+ {{ "username" | i18n }} + {{ cipher.identity.username }} +
+
+ {{ "company" | i18n }} + {{ cipher.identity.company }} +
+
+ {{ "ssn" | i18n }} + {{ cipher.identity.ssn }} +
+
+ {{ "passportNumber" | i18n }} + {{ cipher.identity.passportNumber }} +
+
+ {{ "licenseNumber" | i18n }} + {{ cipher.identity.licenseNumber }} +
+
+ {{ "email" | i18n }} + {{ cipher.identity.email }} +
+
+ {{ "phone" | i18n }} + {{ cipher.identity.phone }} +
+
+ {{ "address" | i18n }} +
{{ cipher.identity.address1 }}
+
{{ cipher.identity.address2 }}
+
{{ cipher.identity.address3 }}
+
+ {{ cipher.identity.fullAddressPart2 }} +
+
{{ cipher.identity.country }}
+
+
+
+
+
+
+
+
+ {{ "uri" | i18n }} + {{ "website" | i18n }} + {{ u.hostOrUri }} +
+
+ + +
+
+
+
+
+
+ {{ "notes" | i18n }} +
+
+
{{ cipher.notes }}
+
+
+ + +
+
+ {{ "attachments" | i18n }} +
+
+ +
+
+
+ +
+
+
+ diff --git a/apps/desktop/src/app/vault/view.component.ts b/apps/desktop/src/app/vault/view.component.ts new file mode 100644 index 0000000000..6c2dd85828 --- /dev/null +++ b/apps/desktop/src/app/vault/view.component.ts @@ -0,0 +1,115 @@ +import { + ChangeDetectorRef, + Component, + EventEmitter, + NgZone, + OnChanges, + Output, +} from "@angular/core"; + +import { ViewComponent as BaseViewComponent } from "jslib-angular/components/view.component"; +import { ApiService } from "jslib-common/abstractions/api.service"; +import { AuditService } from "jslib-common/abstractions/audit.service"; +import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { EventService } from "jslib-common/abstractions/event.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { TokenService } from "jslib-common/abstractions/token.service"; +import { TotpService } from "jslib-common/abstractions/totp.service"; +import { CipherView } from "jslib-common/models/view/cipherView"; + +const BroadcasterSubscriptionId = "ViewComponent"; + +@Component({ + selector: "app-vault-view", + templateUrl: "view.component.html", +}) +export class ViewComponent extends BaseViewComponent implements OnChanges { + @Output() onViewCipherPasswordHistory = new EventEmitter(); + + constructor( + cipherService: CipherService, + totpService: TotpService, + tokenService: TokenService, + i18nService: I18nService, + cryptoService: CryptoService, + platformUtilsService: PlatformUtilsService, + auditService: AuditService, + broadcasterService: BroadcasterService, + ngZone: NgZone, + changeDetectorRef: ChangeDetectorRef, + eventService: EventService, + apiService: ApiService, + private messagingService: MessagingService, + passwordRepromptService: PasswordRepromptService, + logService: LogService, + stateService: StateService + ) { + super( + cipherService, + totpService, + tokenService, + i18nService, + cryptoService, + platformUtilsService, + auditService, + window, + broadcasterService, + ngZone, + changeDetectorRef, + eventService, + apiService, + passwordRepromptService, + logService, + stateService + ); + } + ngOnInit() { + super.ngOnInit(); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { + this.ngZone.run(() => { + switch (message.command) { + case "windowHidden": + this.onWindowHidden(); + break; + default: + } + }); + }); + } + + ngOnDestroy() { + super.ngOnDestroy(); + this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + } + + async ngOnChanges() { + await super.load(); + } + + viewHistory() { + this.onViewCipherPasswordHistory.emit(this.cipher); + } + + async copy(value: string, typeI18nKey: string, aType: string) { + super.copy(value, typeI18nKey, aType); + this.messagingService.send("minimizeOnCopy"); + } + + onWindowHidden() { + this.showPassword = false; + this.showCardNumber = false; + this.showCardCode = false; + if (this.cipher !== null && this.cipher.hasFields) { + this.cipher.fields.forEach((field) => { + field.showValue = false; + }); + } + } +} diff --git a/apps/desktop/src/entry.ts b/apps/desktop/src/entry.ts new file mode 100644 index 0000000000..78fe51e8b9 --- /dev/null +++ b/apps/desktop/src/entry.ts @@ -0,0 +1,35 @@ +import { NativeMessagingProxy } from "./proxy/native-messaging-proxy"; + +// We need to import the other dependencies using `require` since `import` will +// generate `Error: Cannot find module 'electron'`. The cause of this error is +// due to native messaging setting the ELECTRON_RUN_AS_NODE env flag on windows +// which removes the electron module. This flag is needed for stdin/out to work +// properly on Windows. + +if ( + process.argv.some((arg) => arg.indexOf("chrome-extension://") !== -1 || arg.indexOf("{") !== -1) +) { + if (process.platform === "darwin") { + // eslint-disable-next-line + const app = require("electron").app; + + app.on("ready", () => { + app.dock.hide(); + }); + } + + process.stdout.on("error", (e) => { + if (e.code === "EPIPE") { + process.exit(0); + } + }); + + const proxy = new NativeMessagingProxy(); + proxy.run(); +} else { + // eslint-disable-next-line + const Main = require("./main").Main; + + const main = new Main(); + main.bootstrap(); +} diff --git a/apps/desktop/src/global.d.ts b/apps/desktop/src/global.d.ts new file mode 100644 index 0000000000..1b85bb1b6b --- /dev/null +++ b/apps/desktop/src/global.d.ts @@ -0,0 +1 @@ +declare module "forcefocus"; diff --git a/apps/desktop/src/images/bwi-globe.png b/apps/desktop/src/images/bwi-globe.png new file mode 100644 index 0000000000..cceeaefbcf Binary files /dev/null and b/apps/desktop/src/images/bwi-globe.png differ diff --git a/apps/desktop/src/images/icon-highlight.png b/apps/desktop/src/images/icon-highlight.png new file mode 100644 index 0000000000..6cfa837250 Binary files /dev/null and b/apps/desktop/src/images/icon-highlight.png differ diff --git a/apps/desktop/src/images/icon-highlight@2x.png b/apps/desktop/src/images/icon-highlight@2x.png new file mode 100644 index 0000000000..e2b9486938 Binary files /dev/null and b/apps/desktop/src/images/icon-highlight@2x.png differ diff --git a/apps/desktop/src/images/icon-template.png b/apps/desktop/src/images/icon-template.png new file mode 100644 index 0000000000..9eff66254a Binary files /dev/null and b/apps/desktop/src/images/icon-template.png differ diff --git a/apps/desktop/src/images/icon-template@2x.png b/apps/desktop/src/images/icon-template@2x.png new file mode 100644 index 0000000000..3bde303826 Binary files /dev/null and b/apps/desktop/src/images/icon-template@2x.png differ diff --git a/apps/desktop/src/images/icon.ico b/apps/desktop/src/images/icon.ico new file mode 100644 index 0000000000..a18e8341b5 Binary files /dev/null and b/apps/desktop/src/images/icon.ico differ diff --git a/apps/desktop/src/images/icon.png b/apps/desktop/src/images/icon.png new file mode 100644 index 0000000000..6636b04b61 Binary files /dev/null and b/apps/desktop/src/images/icon.png differ diff --git a/apps/desktop/src/images/loading.svg b/apps/desktop/src/images/loading.svg new file mode 100644 index 0000000000..7076310516 --- /dev/null +++ b/apps/desktop/src/images/loading.svg @@ -0,0 +1,6 @@ + + + Loading... + + diff --git a/apps/desktop/src/images/logo-dark@2x.png b/apps/desktop/src/images/logo-dark@2x.png new file mode 100644 index 0000000000..3fc3c6d7a5 Binary files /dev/null and b/apps/desktop/src/images/logo-dark@2x.png differ diff --git a/apps/desktop/src/images/logo-white@2x.png b/apps/desktop/src/images/logo-white@2x.png new file mode 100644 index 0000000000..519cbc75e1 Binary files /dev/null and b/apps/desktop/src/images/logo-white@2x.png differ diff --git a/apps/desktop/src/images/search-desktop-dark.svg b/apps/desktop/src/images/search-desktop-dark.svg new file mode 100644 index 0000000000..029d464afa --- /dev/null +++ b/apps/desktop/src/images/search-desktop-dark.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/desktop/src/images/search-desktop-light.svg b/apps/desktop/src/images/search-desktop-light.svg new file mode 100644 index 0000000000..273bcff401 --- /dev/null +++ b/apps/desktop/src/images/search-desktop-light.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/desktop/src/images/two-factor/0.png b/apps/desktop/src/images/two-factor/0.png new file mode 100644 index 0000000000..f37e3f17b4 Binary files /dev/null and b/apps/desktop/src/images/two-factor/0.png differ diff --git a/apps/desktop/src/images/two-factor/1.png b/apps/desktop/src/images/two-factor/1.png new file mode 100644 index 0000000000..b47a12b1db Binary files /dev/null and b/apps/desktop/src/images/two-factor/1.png differ diff --git a/apps/desktop/src/images/two-factor/2.png b/apps/desktop/src/images/two-factor/2.png new file mode 100644 index 0000000000..ab2e434036 Binary files /dev/null and b/apps/desktop/src/images/two-factor/2.png differ diff --git a/apps/desktop/src/images/two-factor/3.png b/apps/desktop/src/images/two-factor/3.png new file mode 100644 index 0000000000..21aac2da67 Binary files /dev/null and b/apps/desktop/src/images/two-factor/3.png differ diff --git a/apps/desktop/src/images/two-factor/4.png b/apps/desktop/src/images/two-factor/4.png new file mode 100644 index 0000000000..ae7d7b55e4 Binary files /dev/null and b/apps/desktop/src/images/two-factor/4.png differ diff --git a/apps/desktop/src/images/two-factor/6.png b/apps/desktop/src/images/two-factor/6.png new file mode 100644 index 0000000000..ab2e434036 Binary files /dev/null and b/apps/desktop/src/images/two-factor/6.png differ diff --git a/apps/desktop/src/images/u2fkey.jpg b/apps/desktop/src/images/u2fkey.jpg new file mode 100644 index 0000000000..8013df0e56 Binary files /dev/null and b/apps/desktop/src/images/u2fkey.jpg differ diff --git a/apps/desktop/src/images/yubikey.jpg b/apps/desktop/src/images/yubikey.jpg new file mode 100644 index 0000000000..9ddf755dec Binary files /dev/null and b/apps/desktop/src/images/yubikey.jpg differ diff --git a/apps/desktop/src/index.html b/apps/desktop/src/index.html new file mode 100644 index 0000000000..6005361c0c --- /dev/null +++ b/apps/desktop/src/index.html @@ -0,0 +1,19 @@ + + + + + + + Bitwarden + + + + +
+
+ + diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json new file mode 100644 index 0000000000..177d727e73 --- /dev/null +++ b/apps/desktop/src/locales/af/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "Alle Items" + }, + "favorites": { + "message": "Gunstelinge" + }, + "types": { + "message": "Tipes" + }, + "typeLogin": { + "message": "Aantekening" + }, + "typeCard": { + "message": "Kaart" + }, + "typeIdentity": { + "message": "Identiteit" + }, + "typeSecureNote": { + "message": "Beveiligde Nota" + }, + "folders": { + "message": "Vouers" + }, + "collections": { + "message": "Versamelings" + }, + "searchVault": { + "message": "Deursoek kluis" + }, + "addItem": { + "message": "Voeg item toe" + }, + "shared": { + "message": "Gedeel" + }, + "share": { + "message": "Deel" + }, + "moveToOrganization": { + "message": "Skuif na organisasie" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ geskuif na $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Kies ’n organisasie waarheen u hierdie item wil skuif. Deur te skuif kry die organisasie die einaarskap van die item. U is dan nie meer die direkte eienaar van die item wanneer dit geskuif is nie." + }, + "attachments": { + "message": "Aanhegsels" + }, + "viewItem": { + "message": "Bekyk Item" + }, + "name": { + "message": "Naam" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nuwe URI" + }, + "username": { + "message": "Gebruikersnaam" + }, + "password": { + "message": "Wagwoord" + }, + "passphrase": { + "message": "Wagfrase" + }, + "editItem": { + "message": "Wysig Item" + }, + "emailAddress": { + "message": "E-posadres" + }, + "verificationCodeTotp": { + "message": "Bevestigingskode (TOTP)" + }, + "website": { + "message": "Webwerf" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Pasgemaakte Velde" + }, + "launch": { + "message": "Lanseer" + }, + "copyValue": { + "message": "Kopieer Waarde", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimaliseer by kopieer na knipbord" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimaliseer by die kopieer van itemdata na die knipbord." + }, + "toggleVisibility": { + "message": "Tokkel sigbaarheid" + }, + "toggleCollapse": { + "message": "Tokkel invou", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kaarthouernaam" + }, + "number": { + "message": "Nommer" + }, + "brand": { + "message": "Handelsmerk" + }, + "expiration": { + "message": "Vervaldatum" + }, + "securityCode": { + "message": "Sekuriteitskode" + }, + "identityName": { + "message": "Identiteitnaam" + }, + "company": { + "message": "Maatskappy" + }, + "ssn": { + "message": "Identiteitsnommer" + }, + "passportNumber": { + "message": "Paspoortnommer" + }, + "licenseNumber": { + "message": "Lisensienommer" + }, + "email": { + "message": "E-pos" + }, + "phone": { + "message": "Telefoon" + }, + "address": { + "message": "Adres" + }, + "premiumRequired": { + "message": "Premie word vereis" + }, + "premiumRequiredDesc": { + "message": "’n Premie-lidmaatskap is nodig om hierdie funksie te gebruik." + }, + "errorOccurred": { + "message": "’n Fout het voorgekom." + }, + "error": { + "message": "Fout" + }, + "january": { + "message": "Januarie" + }, + "february": { + "message": "Februarie" + }, + "march": { + "message": "Maart" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Mei" + }, + "june": { + "message": "Junie" + }, + "july": { + "message": "Julie" + }, + "august": { + "message": "Augustus" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "Desember" + }, + "ex": { + "message": "bv.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Mnr." + }, + "mrs": { + "message": "Mev." + }, + "ms": { + "message": "Mej." + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Vervalmaand" + }, + "expirationYear": { + "message": "Vervaljaar" + }, + "select": { + "message": "Kies" + }, + "other": { + "message": "Ander" + }, + "generatePassword": { + "message": "Genereer Wagwoord" + }, + "type": { + "message": "Tipe" + }, + "firstName": { + "message": "Voornaam" + }, + "middleName": { + "message": "Middelnaam" + }, + "lastName": { + "message": "Van" + }, + "fullName": { + "message": "Volle naam" + }, + "address1": { + "message": "Adres 1" + }, + "address2": { + "message": "Adres 2" + }, + "address3": { + "message": "Adres 3" + }, + "cityTown": { + "message": "Stad / Dorp" + }, + "stateProvince": { + "message": "Staat / Provinsie" + }, + "zipPostalCode": { + "message": "Poskode" + }, + "country": { + "message": "Land" + }, + "save": { + "message": "Bewaar" + }, + "cancel": { + "message": "Kanselleer" + }, + "delete": { + "message": "Skrap" + }, + "favorite": { + "message": "Gunsteling" + }, + "edit": { + "message": "Wysig" + }, + "authenticatorKeyTotp": { + "message": "Waarmerksleutel (TOTP)" + }, + "folder": { + "message": "Vouer" + }, + "newCustomField": { + "message": "Nuwe Pasgemaakte Veld" + }, + "value": { + "message": "Waarde" + }, + "dragToSort": { + "message": "Sleep om te sorteer" + }, + "cfTypeText": { + "message": "Teks" + }, + "cfTypeHidden": { + "message": "Versteek" + }, + "cfTypeBoolean": { + "message": "Booleaans" + }, + "cfTypeLinked": { + "message": "Gekoppel", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Gekoppelde waarde", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Verwyder" + }, + "nameRequired": { + "message": "Naam word vereis." + }, + "addedItem": { + "message": "Toegevoegde item" + }, + "editedItem": { + "message": "Gewysigde item" + }, + "deleteItem": { + "message": "Skrap Item" + }, + "deleteFolder": { + "message": "Skrap Vouer" + }, + "deleteAttachment": { + "message": "Skrap Aanhegsel" + }, + "deleteItemConfirmation": { + "message": "Is u seker u wil hierdie item skrap?" + }, + "deletedItem": { + "message": "Geskrapte item" + }, + "overwritePasswordConfirmation": { + "message": "Is u seker u wil oor die huidige wagwoord skryf?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Geen Vouer", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Voeg Vouer Toe" + }, + "editFolder": { + "message": "Wysig Vouer" + }, + "regeneratePassword": { + "message": "Hergenereer Wagwoord" + }, + "copyPassword": { + "message": "Kopieer Wagwoord" + }, + "copyUri": { + "message": "Kopieer URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopieer bevestigingskode (TOTP)" + }, + "length": { + "message": "Lengte" + }, + "numWords": { + "message": "Aantal Woorde" + }, + "wordSeparator": { + "message": "Woordskeier" + }, + "capitalize": { + "message": "Maak beginhoofletters", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Voeg syfer toe" + }, + "close": { + "message": "Sluit" + }, + "minNumbers": { + "message": "Min. aantal syfers" + }, + "minSpecial": { + "message": "Min. aantal spesiaal", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Vermy dubbelsinnige karakters" + }, + "searchCollection": { + "message": "Deursoek versameling" + }, + "searchFolder": { + "message": "Deursoek Vouer" + }, + "searchFavorites": { + "message": "Deursoek Gunstelinge" + }, + "searchType": { + "message": "Deursoek Tipe", + "description": "Search item type" + }, + "newAttachment": { + "message": "Voeg Nuwe Aanhegsel Toe" + }, + "deletedAttachment": { + "message": "Geskrapte aanhegsel" + }, + "deleteAttachmentConfirmation": { + "message": "Is u seker u wil hierdie aanhegsel skrap?" + }, + "attachmentSaved": { + "message": "Die aanhegsel is bewaar." + }, + "file": { + "message": "Lêer" + }, + "selectFile": { + "message": "Kies ’n lêer." + }, + "maxFileSize": { + "message": "Maksimumlêergrootte is 500 MB." + }, + "updateKey": { + "message": "U kan nie hierdie funksie gebruik tot u u enkripsiesleutel bygewerk het nie." + }, + "editedFolder": { + "message": "Gewysigde vouer" + }, + "addedFolder": { + "message": "Toegevoegde vouer" + }, + "deleteFolderConfirmation": { + "message": "Is u seker u wil hierdie vouer skrap?" + }, + "deletedFolder": { + "message": "Geskrapte vouer" + }, + "loginOrCreateNewAccount": { + "message": "Teken aan of skep ’n nuwe rekening vir toegang tot u beveiligde kluis." + }, + "createAccount": { + "message": "Skep Rekening" + }, + "logIn": { + "message": "Teken Aan" + }, + "submit": { + "message": "Dien In" + }, + "masterPass": { + "message": "Hoofwagwoord" + }, + "masterPassDesc": { + "message": "Die hoofwagwoord is die wagwoord wat u gebruik vir toegang tot die kluis. Dit is baie belangrik dat u dit onthou. Dit kan op geen manier teruggevind word indien u dit vergeet nie." + }, + "masterPassHintDesc": { + "message": "’n Hoofwagwoordwenk kan u help om u wagwoord te onthou indien u dit sou vergeet." + }, + "reTypeMasterPass": { + "message": "Tik weer hoofwagwoord in" + }, + "masterPassHint": { + "message": "Hoofwagwoordwenk (opsioneel)" + }, + "settings": { + "message": "Instellings" + }, + "passwordHint": { + "message": "Wagwoordwenk" + }, + "enterEmailToGetHint": { + "message": "Voer u e-posadres in om u hoofwagwoordwenk te ontvang." + }, + "getMasterPasswordHint": { + "message": "Kry hoofwagwoordwenk" + }, + "emailRequired": { + "message": "E-posadres word benodig." + }, + "invalidEmail": { + "message": "Ongeldige e-posadres." + }, + "masterPassRequired": { + "message": "Hoofwagwoord word benodig." + }, + "masterPassLength": { + "message": "Hoofwagwoord moet ten minste 8 karakters lank wees." + }, + "masterPassDoesntMatch": { + "message": "Hoofwagwoordbevestiging stem nie ooreen nie." + }, + "newAccountCreated": { + "message": "U nuwe rekening is geskep! U kan nou aanteken." + }, + "masterPassSent": { + "message": "Ons het ’n e-pos gestuur met u hoofwagwoordwenk." + }, + "unexpectedError": { + "message": "'n Onverwagte fout het voorgekom." + }, + "itemInformation": { + "message": "Iteminligting" + }, + "noItemsInList": { + "message": "Daar is geen items om te lys nie." + }, + "sendVerificationCode": { + "message": "Stuur ’n bevestigingskode na u e-pos" + }, + "sendCode": { + "message": "Verstuur kode" + }, + "codeSent": { + "message": "Kode verstuur" + }, + "verificationCode": { + "message": "Bevestigingskode" + }, + "confirmIdentity": { + "message": "Bevestig u identiteit om voort te gaan." + }, + "verificationCodeRequired": { + "message": "Bevestigingskode word vereis." + }, + "invalidVerificationCode": { + "message": "Ongeldige bevestigingskode" + }, + "continue": { + "message": "Gaan Voort" + }, + "enterVerificationCodeApp": { + "message": "Voer die 6-syferbevestigingskode van u waarmerktoep in." + }, + "enterVerificationCodeEmail": { + "message": "Voer die 8-syferbevestigingskode in wat aan $EMAIL$ gestuur is.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-pos met bevestigingskode is na $EMAIL$ gestuur.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Onthou my" + }, + "sendVerificationCodeEmailAgain": { + "message": "Stuur weer e-pos met bevestigingskode" + }, + "useAnotherTwoStepMethod": { + "message": "Gebruik ’n ander tweestapaantekenmetode" + }, + "insertYubiKey": { + "message": "Plaas u YubiKey in u rekenaar se USB-poort en druk dan op sy knop." + }, + "insertU2f": { + "message": "Plaas u beveilingsleutel in u rekenaar se USB-poort. Indien dit ’n knop het, druk dit dan." + }, + "recoveryCodeDesc": { + "message": "Het u toegang tot al u tweestapaanbieders verloor? Gebruik dan u terugstelkode om alle tweestapaanbieders op u rekening te deaktiveer." + }, + "recoveryCodeTitle": { + "message": "Terugstelkode" + }, + "authenticatorAppTitle": { + "message": "Waarmerktoep" + }, + "authenticatorAppDesc": { + "message": "Gebruik ’n waarmerktoep (soos Authy of Google Authenticator) om tydgebaseerde bevestigingskodes te genereer.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey-OTP-beveiligingsleutel" + }, + "yubiKeyDesc": { + "message": "Gebruik ’n YubiKey vir toegang tot u rekening. Werk met YubiKey 4, 4 Nano, 4C en NEO-toestelle." + }, + "duoDesc": { + "message": "Bevestig met Duo Security d.m.v. die Duo Mobile-toep, SMS, spraakoproep of ’n U2F-beveiligingsleutel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Bevestig met Duo Security vir u organisasie d.m.v. die Duo Mobile-toep, SMS, spraakoproep of ’n U2F-beveiligingsleutel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Gebruik ’n WebAuthn-beveilingssleutel om toegang tot u rekening te verkry." + }, + "emailTitle": { + "message": "E-pos" + }, + "emailDesc": { + "message": "U sal bevestigingskodes per e-pos ontvang." + }, + "loginUnavailable": { + "message": "Aantekening onbeskikbaar" + }, + "noTwoStepProviders": { + "message": "Tweestapaantekening is op die rekening geaktiveer, maar hierdie toestel ondersteun geen van die gekonfigureerde aanbieders nie." + }, + "noTwoStepProviders2": { + "message": "Voeg bykomende aanbieders toe wat beter ondersteun word op verskillende toestelle (soos n waarmerktoep)." + }, + "twoStepOptions": { + "message": "Opsies vir tweestapaantekening" + }, + "selfHostedEnvironment": { + "message": "Selfgehuisveste omgewing" + }, + "selfHostedEnvironmentFooter": { + "message": "Spesifiseer die basisbronadres van u selfgehuisveste Bitwarden-installasie." + }, + "customEnvironment": { + "message": "Pasgemaakte omgewing" + }, + "customEnvironmentFooter": { + "message": "Vir gevorderde gebruikers. U kan die basisbronadres van elke diens onafhanklik instel." + }, + "baseUrl": { + "message": "Bedienerbronadres" + }, + "apiUrl": { + "message": "API-bedienerbronadres" + }, + "webVaultUrl": { + "message": "Webkluisbedienerbronadres" + }, + "identityUrl": { + "message": "Identiteitbedienerbronadres" + }, + "notificationsUrl": { + "message": "Kennisgewingsbedienerbronadres" + }, + "iconsUrl": { + "message": "Ikoonbedienerbronadres" + }, + "environmentSaved": { + "message": "Die omgewingbronadresse is bewaar." + }, + "ok": { + "message": "Goed" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nee" + }, + "overwritePassword": { + "message": "Skryf oor wagwoord" + }, + "learnMore": { + "message": "Leer meer" + }, + "featureUnavailable": { + "message": "Funksie Onbeskikbaar" + }, + "loggedOut": { + "message": "Uitgeteken" + }, + "loginExpired": { + "message": "U aantekensessie het verstryk." + }, + "logOutConfirmation": { + "message": "Is u seker u wil uitteken?" + }, + "logOut": { + "message": "Teken Uit" + }, + "addNewLogin": { + "message": "Voeg Nuwe Intekening Toe" + }, + "addNewItem": { + "message": "Voeg Nuwe Item Toe" + }, + "addNewFolder": { + "message": "Voeg Nuwe Vouer Toe" + }, + "view": { + "message": "Bekyk" + }, + "account": { + "message": "Rekening" + }, + "loading": { + "message": "Laai tans…" + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Wagwoordgenereerder" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Rapporteer ’n fout" + }, + "blog": { + "message": "Woernaal" + }, + "followUs": { + "message": "Volg Ons" + }, + "syncVault": { + "message": "Sichroniseer Kluis" + }, + "changeMasterPass": { + "message": "Verander Hoofwagwoord" + }, + "changeMasterPasswordConfirmation": { + "message": "U kan u hoofwagwoord op die bitwarden.com-webkluis verander. Wil u die webwerf nou besoek?" + }, + "fingerprintPhrase": { + "message": "Vingerafdrukfrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "U rekening se vingerafdrukfrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Gaan Na Webkluis" + }, + "getMobileApp": { + "message": "Kry Mobiele Toep" + }, + "getBrowserExtension": { + "message": "Kry Blaaieruitbreiding" + }, + "syncingComplete": { + "message": "Klaar gesinchroniseer" + }, + "syncingFailed": { + "message": "Sinkronisasie het misluk" + }, + "yourVaultIsLocked": { + "message": "U kluis is vergrendel. Verifieer u hoofwagwoord om voort te gaan." + }, + "unlock": { + "message": "Ontgrendel" + }, + "loggedInAsOn": { + "message": "Aangeteken as $EMAIL$ by $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ongeldige hoofwagwoord" + }, + "twoStepLoginConfirmation": { + "message": "Tweestapsaantekening maak u rekening veiliger deur u aantekenpoging te bevestig met ’n ander toestel soos ’n beveiligingsleutel, waarmerktoep, SMS, telefoonoproep of e-pos. U kan tweestapsaantekening in die webkluis op bitwarden.com aktiveer. Wil u die webwerf nou besoek?" + }, + "twoStepLogin": { + "message": "Tweestapaantekening" + }, + "vaultTimeout": { + "message": "Kluis-uittel" + }, + "vaultTimeoutDesc": { + "message": "Kies wanneer u kluis sal uittel en die gekose aksie sal uitvoer." + }, + "immediately": { + "message": "Onmiddellik" + }, + "tenSeconds": { + "message": "10 sekondes" + }, + "twentySeconds": { + "message": "20 sekondes" + }, + "thirtySeconds": { + "message": "30 sekondes" + }, + "oneMinute": { + "message": "1 minuut" + }, + "twoMinutes": { + "message": "2 minute" + }, + "fiveMinutes": { + "message": "5 minute" + }, + "fifteenMinutes": { + "message": "15 minute" + }, + "thirtyMinutes": { + "message": "30 minute" + }, + "oneHour": { + "message": "1 uur" + }, + "fourHours": { + "message": "4 uur" + }, + "onIdle": { + "message": "By stelselonaktiwiteit" + }, + "onSleep": { + "message": "By slaapmodus" + }, + "onLocked": { + "message": "By stelselvergrendeling" + }, + "onRestart": { + "message": "Nadat toep herbegin is" + }, + "never": { + "message": "Nooit" + }, + "security": { + "message": "Sekuriteit" + }, + "clearClipboard": { + "message": "Wis Knipbord", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Wis gekopieerde waardes outomaties vanuit u knipbord.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Deaktiveer Webwerfikone" + }, + "disableFaviconDesc": { + "message": "Webwerfikone verskaf ’n herkenbare beeld langs elke aantekenitem in u kluis." + }, + "enableMinToTray": { + "message": "Minimaliseer na stelsellaai" + }, + "enableMinToTrayDesc": { + "message": "By die minimaliseer van die venster, toon eerder ’n ikoon in die stelsellaai." + }, + "enableMinToMenuBar": { + "message": "Minimaliseer na kieslysbalk" + }, + "enableMinToMenuBarDesc": { + "message": "By die minimaliseer van die venster, toon eerder ’n ikoon in die kieslysbalk." + }, + "enableCloseToTray": { + "message": "Sluit na stelsellaai" + }, + "enableCloseToTrayDesc": { + "message": "By die sluit van die venster, toon eerder ’n ikoon in die stelsellaai." + }, + "enableCloseToMenuBar": { + "message": "Sluit na kieslysbalk" + }, + "enableCloseToMenuBarDesc": { + "message": "By die sluit van die venster, toon eerder ’n ikoon in die kieslysbalk." + }, + "enableTray": { + "message": "Aktiveer stelsellaai" + }, + "enableTrayDesc": { + "message": "Toon altyd ’n ikoon in die stelsellaai." + }, + "startToTray": { + "message": "Begin na stelsellaai" + }, + "startToTrayDesc": { + "message": "Wanneer die toepassing aanvanklik begin word, toon slegs ’n ikoon in die stelsellaai." + }, + "startToMenuBar": { + "message": "Begin na kieslysbalk" + }, + "startToMenuBarDesc": { + "message": "Wanneer die toepassing aanvanklik begin word, toon slegs ’n ikoon in die kieslysbalk." + }, + "openAtLogin": { + "message": "Begin outomaties by aanskakel" + }, + "openAtLoginDesc": { + "message": "Begin die Bitwarden-werkskermtoep outomaties wanneer rekenaar aangeskakel word." + }, + "alwaysShowDock": { + "message": "Toon altyd in die dok" + }, + "alwaysShowDockDesc": { + "message": "Toon die Bitwarden-ikoon in die dok, selfs wanneer geminimaliseer in die kieslysbalk." + }, + "confirmTrayTitle": { + "message": "Bevestig deaktivering van stelsellaai" + }, + "confirmTrayDesc": { + "message": "Deaktivering van hierdie instelling sal ook alle ander instellings van die stelsellaai deaktiveer." + }, + "language": { + "message": "Taal" + }, + "languageDesc": { + "message": "Verander die taal van die toepassing. Herbegin word vereis." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Verander die toepassing se kleurtema." + }, + "dark": { + "message": "Donker", + "description": "Dark color" + }, + "light": { + "message": "Lig", + "description": "Light color" + }, + "copy": { + "message": "Kopieer", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Gaan na vir bywerkings" + }, + "version": { + "message": "Weergawe $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Herbegin om by te werk" + }, + "restartToUpdateDesc": { + "message": "Weergawe $VERSION_NUM$ is gereed vir installasie. U moet die toepassing herbegin om die installasie te voltooi. Wil u nou herbegin en bywerk?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Bywerking Beskikbaar" + }, + "updateAvailableDesc": { + "message": "’n Bywerking is gevind. Wil u dit nou aflaai?" + }, + "restart": { + "message": "Herbegin" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "Geen bywerkings is tans beskikbaar nie. U gebruik die nuutste weergawe." + }, + "updateError": { + "message": "Bywerkfout" + }, + "unknown": { + "message": "Onbekend" + }, + "copyUsername": { + "message": "Kopieer Gebruikersnaam" + }, + "copyNumber": { + "message": "Kopieer Nommer", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopieer Sekureiteitskode", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premie-lidmaatskap" + }, + "premiumManage": { + "message": "Bestuur Lidmaatskap" + }, + "premiumManageAlert": { + "message": "U kan u lidmaatskap op die bitwarden.com-webkluis bestuur. Wil u nou na die webwerf gaan?" + }, + "premiumRefresh": { + "message": "Verfris lidmaatskap" + }, + "premiumNotCurrentMember": { + "message": "U is nie tans ’n premie-lid nie." + }, + "premiumSignUpAndGet": { + "message": "Teken aan vir ’n premie-lidmaatskap en kry:" + }, + "premiumSignUpStorage": { + "message": "1 GG geënkripteerde berging vir lêeraanhegsels." + }, + "premiumSignUpTwoStep": { + "message": "Bykomende tweestapaantekenopsies soos YubiKey, FIDO U2F en Duo." + }, + "premiumSignUpReports": { + "message": "Wagwoordhigiëne, rekeningwelstand en databreukverslae om u kluis veilig te hou." + }, + "premiumSignUpTotp": { + "message": "TOTP-bevestigingskodegenereerder (2FA) vir aantekenings in u kluis." + }, + "premiumSignUpSupport": { + "message": "Klantediens met hoë prioriteit." + }, + "premiumSignUpFuture": { + "message": "Alle toekomstige premie-funksies. Binnekort meer!" + }, + "premiumPurchase": { + "message": "Koop Premie" + }, + "premiumPurchaseAlert": { + "message": "U kan lidmaatskap op die bitwarden.com-webkluis koop. Wil u nou na die webwerf gaan?" + }, + "premiumCurrentMember": { + "message": "U is ’n premie-lid!" + }, + "premiumCurrentMemberThanks": { + "message": "Dankie dat u Bitwarden ondersteun." + }, + "premiumPrice": { + "message": "Alles vir slegs $PRICE$ /jaar!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Klaar verfris" + }, + "passwordHistory": { + "message": "Wagwoordgeskiedenis" + }, + "clear": { + "message": "Wis", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Daar is geen wagwoorde om te lys nie." + }, + "undo": { + "message": "Ontdoen" + }, + "redo": { + "message": "Herdoen" + }, + "cut": { + "message": "Knip", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Plak", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Kies Alles" + }, + "zoomIn": { + "message": "Zoem in" + }, + "zoomOut": { + "message": "Zoem uit" + }, + "resetZoom": { + "message": "Stel zoem terug" + }, + "toggleFullScreen": { + "message": "Tokkel Volskerm" + }, + "reload": { + "message": "Herlaai" + }, + "toggleDevTools": { + "message": "Tokkel Ontwikkelaarsnutsmiddels" + }, + "minimize": { + "message": "Verklein", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoem" + }, + "bringAllToFront": { + "message": "Bring Alles na Vore", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Oor Bitwarden" + }, + "services": { + "message": "Dienste" + }, + "hideBitwarden": { + "message": "Versteek Bitwarden" + }, + "hideOthers": { + "message": "Versteek Ander" + }, + "showAll": { + "message": "Toon Alles" + }, + "quitBitwarden": { + "message": "Sluit Bitwarden Af" + }, + "valueCopied": { + "message": "$VALUE$ gekopieer", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Venster" + }, + "checkPassword": { + "message": "Gaan na of wagwoord blootgestel is." + }, + "passwordExposed": { + "message": "Hierdie wagwoord is $VALUE$ keer in databreuke blootgestel. U behoort dit te verander.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Hierdie wagwoord is in geen bekende databreuke gevind nie. Dit behoort veilig vir gebruik te wees." + }, + "baseDomain": { + "message": "Basisdomein", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Gasheer", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Presies" + }, + "startsWith": { + "message": "Begin met" + }, + "regEx": { + "message": "Gewone uitdrukking", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Ooreenkomsbespeuring", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Verstekooreenkomsbespeuring", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Tokkel Opsies" + }, + "organization": { + "message": "Organisasie", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Verstek" + }, + "exit": { + "message": "Verlaat" + }, + "showHide": { + "message": "Vertoon/Versteek", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Versteek na stelsellaai" + }, + "alwaysOnTop": { + "message": "Altyd Bo", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Bygewerk", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Wagwoord bygewerk", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Stuur Kluis Uit" + }, + "fileFormat": { + "message": "Lêerformaat" + }, + "warning": { + "message": "WAARSKUWING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Bevestig kluisuitstuur" + }, + "exportWarningDesc": { + "message": "Hierdie uitstuur bevat u kluisdata in ’n ongeënkripteerde formaat. U behoort dit nie oor onbeveiligde kanale (soos e-pos) te bewaar of verstuur nie. Skrap dit sodra u dit klaar gebruik het." + }, + "encExportKeyWarningDesc": { + "message": "Hierdie uitstuur vergrendel u data met u rekening se enkripsiesleutel. Indien u ooit u rekening se enkripsiesleitel wil verander moet u dit weer uitstuur aangesien u dan nie hierdie uitstuurlêer sal kan dekripteer nie." + }, + "encExportAccountWarningDesc": { + "message": "Rekeningenkripsiesleutels is uniek tot elke Bitwarden-gebruikersrekening, daarom kan u nie ’n geënkripteerde uitstuur in ’n ander rekening invoer nie." + }, + "noOrganizationsList": { + "message": "U behoort aan geen organisasies nie. Organisasies laat u toe om items op beveiligde wyse met ander gebruikers te deel." + }, + "noCollectionsInList": { + "message": "Daar is geen versamelings om te lys nie." + }, + "ownership": { + "message": "Eienaarskap" + }, + "whoOwnsThisItem": { + "message": "Wie besit hierdie item?" + }, + "strong": { + "message": "Sterk", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Goed", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Swak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Swak Hoofwagwoord" + }, + "weakMasterPasswordDesc": { + "message": "U gekose hoofwagwoord is swak. U moet ’n sterk hoofwagwoord (of ’n wagfrase) gebruik ten einde u Bitwarde-rekening te beveilig. Is u seker u wil hierdie wagwoord gebruik?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Ontgrendel met PIN" + }, + "setYourPinCode": { + "message": "Stel u PIN-kode in om Bitwarden te ontgrendel. U PIN-kode word heringestel indien u ooit volledig by die toep uitteken." + }, + "pinRequired": { + "message": "PIN-kode word vereis." + }, + "invalidPin": { + "message": "Ongeldige PIN-kode." + }, + "unlockWithWindowsHello": { + "message": "Ontgrendel met Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Bevestig vir Bitwarden." + }, + "unlockWithTouchId": { + "message": "Ontgrendel met Touch ID" + }, + "touchIdConsentMessage": { + "message": "ontgrendel u kluis" + }, + "noAutoPromptWindowsHello": { + "message": "Moenie by lansering vra vir Windows Hello nie." + }, + "noAutoPromptTouchId": { + "message": "Moenie by lansering vra vir Touch ID nie." + }, + "lockWithMasterPassOnRestart": { + "message": "Vergrendel by herbegin met hoofwagwoord" + }, + "preferences": { + "message": "Voorkeure" + }, + "enableMenuBar": { + "message": "Aktiveer Kieslysstaafikoon" + }, + "enableMenuBarDesc": { + "message": "Toon altyd ’n ikoon in die kieslysstaaf." + }, + "hideToMenuBar": { + "message": "Versteek na kieslysbalk" + }, + "selectOneCollection": { + "message": "U moet ten minste een versameling kies." + }, + "premiumUpdated": { + "message": "U het na premie opgegradeer." + }, + "restore": { + "message": "Stel terug" + }, + "premiumManageAlertAppStore": { + "message": "U kan u intekening vanuit die App Store bestuur. Wil u die App Store nou besoek?" + }, + "legal": { + "message": "Juridies", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Gebruiksvoorwaardes" + }, + "privacyPolicy": { + "message": "Privaatheidsbeleid" + }, + "unsavedChangesConfirmation": { + "message": "Is u seker u wil afsluit? Indien u nou afsluit sal u huidige inligting nie bewaar word nie." + }, + "unsavedChangesTitle": { + "message": "Onbewaarde Veranderinge" + }, + "clone": { + "message": "Kloon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Een of meer organisasiebeleide beïnvloed u genereerderinstellings." + }, + "vaultTimeoutAction": { + "message": "Kluis-uittelaksie" + }, + "vaultTimeoutActionLockDesc": { + "message": "Om toegang tot ’n vergendelde kluis te kry moet die hoofwagwoord weer ingevoer word." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Om toegang tot ’n uitgetekende kluis te kry moet u weer waarmerk." + }, + "lock": { + "message": "Vergrendel", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Asblik", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Deursoek Asblik" + }, + "permanentlyDeleteItem": { + "message": "Skrap item permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Is u seker u wil hierdie item permanent skrap?" + }, + "permanentlyDeletedItem": { + "message": "Permanent geskrapte item" + }, + "restoreItem": { + "message": "Stel item terug" + }, + "restoreItemConfirmation": { + "message": "Is u seker u wil hierdie item terugstel?" + }, + "restoredItem": { + "message": "Teruggestelde item" + }, + "permanentlyDelete": { + "message": "Skrap permanent" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Deur uit te teken word alle toegang tot u kluis verwyder en word waarmerking na die uitteltydperk vereis. Is u seker u wil hierdie instelling gebruik?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Uittelaksiebevestiging" + }, + "enterpriseSingleSignOn": { + "message": "Onderneming-enkelaanteken" + }, + "setMasterPassword": { + "message": "Stel Hoofwagwoord" + }, + "ssoCompleteRegistration": { + "message": "Om aantekening met SSO te voltooi moet u ’n hoofwagwoord instel vir toegang tot en beskerming van u kluis." + }, + "newMasterPass": { + "message": "Nuwe hoofwagwoord" + }, + "confirmNewMasterPass": { + "message": "Bevestig nuwe hoofwagwoord" + }, + "masterPasswordPolicyInEffect": { + "message": "Een of meer organisasiebeleide stel die volgende eise aan u hoofwagwoord:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum ingewikkeldheidstelling van $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum lengte van $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Bevat een of meer hoofletterkarakters" + }, + "policyInEffectLowercase": { + "message": "Bevat een of meer kleinletterkarakters" + }, + "policyInEffectNumbers": { + "message": "Bevat een of meer syfers" + }, + "policyInEffectSpecial": { + "message": "Bevat een of meer van die volgende spesiale karakters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "U nuwe hoofwagwoord voldoen nie aan die beleidsvereistes nie." + }, + "acceptPolicies": { + "message": "Deur hierdie kassie af te merk stem u in tot die volgende:" + }, + "acceptPoliciesError": { + "message": "Gebruiksvoorwaardes en privaatheidsbeleid is nie erken nie." + }, + "enableBrowserIntegration": { + "message": "Aktiveer blaaierintegrasie" + }, + "enableBrowserIntegrationDesc": { + "message": "Blaaierintegrasie word gebruik vir biometrie in blaaier." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Blaaierintegrasie word nie ondersteun nie" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Ongelukkig word blaaierintegrasie tans slegs in die weergawe vir die Mac-toepwinkel ondersteun." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Blaaierintegrasie word nie ondersteun nie" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Ongelukkig word blaaierintegrasie tans nie in die weergawe vir die Windows-winkel ondersteun nie." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Vereis bevestiging vir blaaierintegrasie" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Aktiveer ’n bykomende sekuriteitsvlak deur ’n vingerafdrukfrase te vereis wanneer u rekenaar en blaaier gekoppel word. Wanneer geaktiveer moet u elke verbinding bevestig." + }, + "approve": { + "message": "Keur goed" + }, + "verifyBrowserTitle": { + "message": "Bevestig blaaierverbinding" + }, + "verifyBrowserDesc": { + "message": "Maak seker dat die getoonde vingerafdruk identies is aan dié wat in die blaaieruitbreiding vertoon word." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrie is geaktiveer" + }, + "biometricsNotEnabledDesc": { + "message": "Vir blaaierbiometrie moet werkskermbiometrie eers in instellings geaktiveer wees." + }, + "personalOwnershipSubmitError": { + "message": "Weens ’n ondernemingsbeleid mag u geen wagwoorde in u persoonlike kluis bewaar nie. Verander die eienaarskap na ’n organisasie en kies uit ’n van die beskikbare versamelings." + }, + "hintEqualsPassword": { + "message": "U wagwoordwenk kan nie dieselfde as u wagwoord wees nie." + }, + "personalOwnershipPolicyInEffect": { + "message": "’n Organisasiebeleid beïnvloed u eienaarskapopsies." + }, + "allSends": { + "message": "Alle Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Lêer" + }, + "sendTypeText": { + "message": "Teks" + }, + "searchSends": { + "message": "Deursoek Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Wysig Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My kluis" + }, + "text": { + "message": "Teks" + }, + "deletionDate": { + "message": "Skrapdatum" + }, + "deletionDateDesc": { + "message": "Die Send sal outomaties op die aangewese datum en tyd geskrap word.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Vervaldatum" + }, + "expirationDateDesc": { + "message": "Indien ingestel sal toegang tot hierdie Send op die aangewese datum en tyd verstryk.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimum toegangsaantal" + }, + "maxAccessCountDesc": { + "message": "Indien ingestel het gebruikers ne meer toegang tot hierdie Send sodra die maksimum aantal toegang bereik is.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Huidige toegangsaantal" + }, + "disableSend": { + "message": "Deaktiveer hierdie Send sodat niemand toegang daartoe het nie.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Vereis opsioneel ’n wagwoord vir gebruikers om toegang tot hierdie Send te verkry.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Privaat notas oor hierdie Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send-skakel", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send-skakel", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Versteek die teks be verstek wanneer die Send gebruik word", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send geskep", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send gewysig", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send geskrap", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nuwe wagwoord" + }, + "whatTypeOfSend": { + "message": "Welke tipe Send is dit?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Skep Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Die teks wat u wil verstuur." + }, + "sendFileDesc": { + "message": "Die lêer wat u wil verstuur." + }, + "days": { + "message": "$DAYS$ dae", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dag" + }, + "custom": { + "message": "Pasgemaak" + }, + "deleteSendConfirmation": { + "message": "Is u seker u wil hierdie Send skrap?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopieer Send-skakel na knipbord", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopieer die skakel om hierdie Send te deel tydens bewaar na my knipbord." + }, + "sendDisabled": { + "message": "Send gedeaktiveer", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "A.g.v. ’n ondernemingsbeleid kan u slegs ’n bestaande Send skrap.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopieer skakel" + }, + "disabled": { + "message": "Gedeaktiveer" + }, + "maxAccessCountReached": { + "message": "Maks toegangsaantal bereik" + }, + "expired": { + "message": "Verstreke" + }, + "pendingDeletion": { + "message": "Word geskrap" + }, + "webAuthnAuthenticate": { + "message": "Waarmerk WebAuthn" + }, + "hideEmail": { + "message": "Versteek my e-posadres vir ontvangers." + }, + "sendOptionsPolicyInEffect": { + "message": "Een of meer organisasiebeleide beïnvloed u Send-opsies." + }, + "emailVerificationRequired": { + "message": "Vereis e-posbevestiging" + }, + "emailVerificationRequiredDesc": { + "message": "U moet u e-pos bevestig om die funksie te gebruik." + }, + "passwordPrompt": { + "message": "Vra weer vir hoofwagwoord" + }, + "passwordConfirmation": { + "message": "Hoofwagwoordbevestiging" + }, + "passwordConfirmationDesc": { + "message": "Hierdie aksie is beskerm. Voer u hoofwagwoord in om u identiteit te bevestig om voort te gaan." + }, + "updatedMasterPassword": { + "message": "Hoofwagwoord bygewerk" + }, + "updateMasterPassword": { + "message": "Werk hoofwagwoord by" + }, + "updateMasterPasswordWarning": { + "message": "U hoofwagwoord is onlangs deur ’n administrateur in u organisasie verander. Om toegang tot u kluis te verkry moet u dit nóú bywerk. Deur voort te gaan word u uit u huidige sessie geteken, waarna u weer sal moet aanteken. Aktiewe sessies op ander toestelle kan vir tot ’n uur steeds aktief bly." + }, + "hours": { + "message": "Uur" + }, + "minutes": { + "message": "Minute" + }, + "vaultTimeoutPolicyInEffect": { + "message": "U organisasiebeleide beïnvloed u kluisuitelling. Maksimum toegelate kluisuittelling is $HOURS$ uur en $MINUTES$ minuut(e)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "U kluisuittelling oorskry die beperkinge wat deur u organisasie daargestel is." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Outomatiese inskrywing" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Hierdie organisasie het ’n ondernemingsbeleid wat u outomaties inskryf in die terugstel van u wagwoord. Inskrywing stel organisasiebeheerders in staat om u hoofwagwoord te wysig." + }, + "vaultExportDisabled": { + "message": "Kluisuitstuur gedeaktiveer" + }, + "personalVaultExportPolicyInEffect": { + "message": "Een of meer organisasiebeleide verhoed u om u persoonlike kluis uit te stuur." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Verwyder hoofwagwoord" + }, + "removedMasterPassword": { + "message": "Hoofwagwoord is verwyder." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ gebruik SSO met ’n sleutelbediener op ’n eie gasheer. ’n Hoofwagwoord word nie meer vereis vir aantekening vir lede van hierdie organisasie nie.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Verlaat organisasie" + }, + "leaveOrganizationConfirmation": { + "message": "Is u seker u wil hierdie organisasie verlaat?" + }, + "leftOrganization": { + "message": "U het die organisasie verlaat." + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan nie die sleutelkoppelstuk bereik nie, probeer later weer." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json new file mode 100644 index 0000000000..7ab6a7428c --- /dev/null +++ b/apps/desktop/src/locales/az/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtrlər" + }, + "allItems": { + "message": "Bütün elementlər" + }, + "favorites": { + "message": "Sevimlilər" + }, + "types": { + "message": "Növlər" + }, + "typeLogin": { + "message": "Giriş" + }, + "typeCard": { + "message": "Kart" + }, + "typeIdentity": { + "message": "Kimlik" + }, + "typeSecureNote": { + "message": "Təhlükəsizlik qeydi" + }, + "folders": { + "message": "Qovluqlar" + }, + "collections": { + "message": "Kolleksiyalar" + }, + "searchVault": { + "message": "Anbarda axtar" + }, + "addItem": { + "message": "Element əlavə et" + }, + "shared": { + "message": "Paylaşılan" + }, + "share": { + "message": "Paylaş" + }, + "moveToOrganization": { + "message": "Təşkilata daşı" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$ şirkətinə daşındı", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Bu elementi daşımaq istədiyiniz təşkilatı seçin. Bir təşkilata daşımaq, elementin sahibliyini də həmin təşkilata daşıyacaq. Daşıdıqdan sonra bu elementə birbaşa sahibliyiniz olmayacaq." + }, + "attachments": { + "message": "Qoşmalar" + }, + "viewItem": { + "message": "Elementə bax" + }, + "name": { + "message": "Ad" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Yeni URI" + }, + "username": { + "message": "İstifadəçi adı" + }, + "password": { + "message": "Parol" + }, + "passphrase": { + "message": "Uzun ifadə" + }, + "editItem": { + "message": "Elementə düzəliş et" + }, + "emailAddress": { + "message": "E-poçt ünvanı" + }, + "verificationCodeTotp": { + "message": "Təsdiqləmə kodu (TOTP)" + }, + "website": { + "message": "Veb sayt" + }, + "notes": { + "message": "Notlar" + }, + "customFields": { + "message": "Özəl sahələr" + }, + "launch": { + "message": "Başlat" + }, + "copyValue": { + "message": "Dəyəri kopyala", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Lövhəyə kopyalananda kiçilt" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Elementin verilənlərini lövhəyə kopyalayarkən kiçilt." + }, + "toggleVisibility": { + "message": "Görünməni aç/bağla" + }, + "toggleCollapse": { + "message": "Yığcam etməni aç/bağla", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kart sahibinin adı" + }, + "number": { + "message": "Nömrə" + }, + "brand": { + "message": "Brend" + }, + "expiration": { + "message": "Bitmə vaxtı" + }, + "securityCode": { + "message": "Təhlükəsizlik kodu" + }, + "identityName": { + "message": "Kimlik adı" + }, + "company": { + "message": "Şirkət" + }, + "ssn": { + "message": "Sosial təhlükəsizlik nömrəsi" + }, + "passportNumber": { + "message": "Pasport nömrəsi" + }, + "licenseNumber": { + "message": "Lisenziya nömrəsi" + }, + "email": { + "message": "E-poçt" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Ünvan" + }, + "premiumRequired": { + "message": "Premium üzvlük lazımdır" + }, + "premiumRequiredDesc": { + "message": "Bu özəlliyi istifadə etmək üçün premium üzvlük lazımdır." + }, + "errorOccurred": { + "message": "Bir xəta baş verdi." + }, + "error": { + "message": "Xəta" + }, + "january": { + "message": "Yanvar" + }, + "february": { + "message": "Fevral" + }, + "march": { + "message": "Mart" + }, + "april": { + "message": "Aprel" + }, + "may": { + "message": "May" + }, + "june": { + "message": "İyun" + }, + "july": { + "message": "İyul" + }, + "august": { + "message": "Avqust" + }, + "september": { + "message": "Sentyabr" + }, + "october": { + "message": "Oktyabr" + }, + "november": { + "message": "Noyabr" + }, + "december": { + "message": "Dekabr" + }, + "ex": { + "message": "məs.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Başlıq" + }, + "mr": { + "message": "Cənab" + }, + "mrs": { + "message": "Xanım" + }, + "ms": { + "message": "Hörmətli" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Son istifadə ayı" + }, + "expirationYear": { + "message": "Son istifadə ili" + }, + "select": { + "message": "Seçin" + }, + "other": { + "message": "Digər" + }, + "generatePassword": { + "message": "Parol yarat" + }, + "type": { + "message": "Növ" + }, + "firstName": { + "message": "Ad" + }, + "middleName": { + "message": "Orta ad" + }, + "lastName": { + "message": "Soyad" + }, + "fullName": { + "message": "Tam ad" + }, + "address1": { + "message": "Ünvan 1" + }, + "address2": { + "message": "Ünvan 2" + }, + "address3": { + "message": "Ünvan 3" + }, + "cityTown": { + "message": "Şəhər/Rayon" + }, + "stateProvince": { + "message": "Ölkə/Əyalət" + }, + "zipPostalCode": { + "message": "Zip/ Poçt kodu" + }, + "country": { + "message": "Ölkə" + }, + "save": { + "message": "Saxla" + }, + "cancel": { + "message": "İmtina" + }, + "delete": { + "message": "Sil" + }, + "favorite": { + "message": "Sevimli" + }, + "edit": { + "message": "Düzəliş et" + }, + "authenticatorKeyTotp": { + "message": "Kimlik təsdiqləyici açarı (TOTP)" + }, + "folder": { + "message": "Qovluq" + }, + "newCustomField": { + "message": "Yeni özəl sahə" + }, + "value": { + "message": "Dəyər" + }, + "dragToSort": { + "message": "Sıralamaq üçün sürüşdürün" + }, + "cfTypeText": { + "message": "Mətn" + }, + "cfTypeHidden": { + "message": "Gizli" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Əlaqə yaradıldı", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Əlaqəli dəyər", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Çıxart" + }, + "nameRequired": { + "message": "Ad lazımdır." + }, + "addedItem": { + "message": "Element əlavə edildi" + }, + "editedItem": { + "message": "Elementə düzəliş edildi" + }, + "deleteItem": { + "message": "Elementi sil" + }, + "deleteFolder": { + "message": "Qovluğu sil" + }, + "deleteAttachment": { + "message": "Qoşmanı sil" + }, + "deleteItemConfirmation": { + "message": "Həqiqətən tullantı qutusuna göndərmək istəyirsiniz?" + }, + "deletedItem": { + "message": "Element tullantı qutusuna göndərildi" + }, + "overwritePasswordConfirmation": { + "message": "Hazırkı parolun üzərinə yazmaq istədiyinizə əminsiniz?" + }, + "overwriteUsername": { + "message": "İstifadəçi adının üzərinə yaz" + }, + "overwriteUsernameConfirmation": { + "message": "Hazırkı istifadəçi adının üzərinə yazmaq istədiyinizə əminsiniz?" + }, + "noneFolder": { + "message": "Qovluq yoxdur", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Qovluq əlavə et" + }, + "editFolder": { + "message": "Qovluğa düzəliş et" + }, + "regeneratePassword": { + "message": "Parolu yenidən yarat" + }, + "copyPassword": { + "message": "Parolu kopyala" + }, + "copyUri": { + "message": "URI-ni kopyala" + }, + "copyVerificationCodeTotp": { + "message": "Təsdiqləmə kodunu kopyala (TOTP)" + }, + "length": { + "message": "Uzunluq" + }, + "numWords": { + "message": "Söz sayı" + }, + "wordSeparator": { + "message": "Söz ayırıcı" + }, + "capitalize": { + "message": "İlk hərfi böyük yaz", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Rəqəm əlavə et" + }, + "close": { + "message": "Bağla" + }, + "minNumbers": { + "message": "Minimum rəqəm" + }, + "minSpecial": { + "message": "Minimum simvol", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Anlaşılmaz simvollardan çəkinin" + }, + "searchCollection": { + "message": "Kolleksiya axtar" + }, + "searchFolder": { + "message": "Qovluq axtar" + }, + "searchFavorites": { + "message": "Sevimliləri axtar" + }, + "searchType": { + "message": "Axtarış növü", + "description": "Search item type" + }, + "newAttachment": { + "message": "Yeni qoşma əlavə et" + }, + "deletedAttachment": { + "message": "Qoşma silindi" + }, + "deleteAttachmentConfirmation": { + "message": "Bu qoşmanı silmək istədiyinizə əminsiniz?" + }, + "attachmentSaved": { + "message": "Qoşma saxlanıldı." + }, + "file": { + "message": "Fayl" + }, + "selectFile": { + "message": "Fayl seçin." + }, + "maxFileSize": { + "message": "Maksimal fayl həcmi 500 MB-dır." + }, + "updateKey": { + "message": "Şifrələmə açarınızı yeniləyənə qədər bu özəlliyi istifadə edə bilməzsiniz." + }, + "editedFolder": { + "message": "Qovluğa düzəliş edildi" + }, + "addedFolder": { + "message": "Qovluq əlavə edildi" + }, + "deleteFolderConfirmation": { + "message": "Bu qovluğu silmək istədiyinizə əminsiniz?" + }, + "deletedFolder": { + "message": "Qovluq silindi" + }, + "loginOrCreateNewAccount": { + "message": "Təhlükəsiz anbarınıza müraciət etmək üçün giriş edin və ya yeni bir hesab yaradın." + }, + "createAccount": { + "message": "Hesab yarat" + }, + "logIn": { + "message": "Giriş et" + }, + "submit": { + "message": "Göndər" + }, + "masterPass": { + "message": "Ana parol" + }, + "masterPassDesc": { + "message": "Ana parol, anbarınıza müraciət etmək üçün istifadə edəcəyiniz paroldur. Ana parolu yadda saxlamaq çox vacibdir. Unutsanız, parolu bərpa etməyin heç bir yolu yoxdur." + }, + "masterPassHintDesc": { + "message": "Ana parol məsləhəti, unutduğunuz parolunuzu xatırlamağınıza kömək edir." + }, + "reTypeMasterPass": { + "message": "Ana parolu yenidən yaz" + }, + "masterPassHint": { + "message": "Ana parol məsləhəti (ixtiyari)" + }, + "settings": { + "message": "Tənzimləmələr" + }, + "passwordHint": { + "message": "Parol məsləhəti" + }, + "enterEmailToGetHint": { + "message": "Ana parol məsləhətini alacağınız hesabınızın e-poçt ünvanını daxil edin." + }, + "getMasterPasswordHint": { + "message": "Ana parol üçün məsləhət alın" + }, + "emailRequired": { + "message": "E-poçt ünvanı lazımdır." + }, + "invalidEmail": { + "message": "Etibarsız e-poçt ünvanı." + }, + "masterPassRequired": { + "message": "Ana parol lazımdır." + }, + "masterPassLength": { + "message": "Ana parol ən azı 8 simvol uzunluğunda olmalıdır." + }, + "masterPassDoesntMatch": { + "message": "Ana parol təsdiqləməsi uyğun gəlmir." + }, + "newAccountCreated": { + "message": "Yeni hesabınız yaradıldı! İndi giriş edə bilərsiniz." + }, + "masterPassSent": { + "message": "Ana parol məsləhətini ehtiva edən bir e-poçt göndərdik." + }, + "unexpectedError": { + "message": "Gözlənilməz bir səhv baş verdi." + }, + "itemInformation": { + "message": "Element məlumatları" + }, + "noItemsInList": { + "message": "Siyahılanacaq heç bir element yoxdur." + }, + "sendVerificationCode": { + "message": "E-poçtunuza bir təsdiqləmə kodu göndərin" + }, + "sendCode": { + "message": "Kod göndər" + }, + "codeSent": { + "message": "Kod göndərildi" + }, + "verificationCode": { + "message": "Təsdiqləmə kodu" + }, + "confirmIdentity": { + "message": "Davam etmək üçün kimliyinizi təsdiqləyin." + }, + "verificationCodeRequired": { + "message": "Təsdiq kodu lazımdır." + }, + "invalidVerificationCode": { + "message": "Etibarsız təsdiqləmə kodu" + }, + "continue": { + "message": "Davam" + }, + "enterVerificationCodeApp": { + "message": "Kimlik təsdiqləyici tətbiqindən 6 rəqəmli təsdiqləmə kodunu daxil edin." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ ünvanına göndərilən e-poçtdakı 6 rəqəmli təsdiqləmə kodunu daxil edin.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Təsdiqləmə poçtu $EMAIL$ ünvanına göndərildi.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Məni xatırla" + }, + "sendVerificationCodeEmailAgain": { + "message": "Təsdiqləmə kodu olan e-poçtu yenidən göndər" + }, + "useAnotherTwoStepMethod": { + "message": "Başqa bir iki mərhələli giriş metodu istifadə edin" + }, + "insertYubiKey": { + "message": "\"YubiKey\"i kompüterinizin USB portuna taxın, daha sonra düyməsinə toxunun." + }, + "insertU2f": { + "message": "Təhlükəsizlik açarını kompüterinizin USB portun taxın. Düyməsi varsa toxunun." + }, + "recoveryCodeDesc": { + "message": "İki mərhələli təsdiqləmə təchizatçılarına müraciəti itirmisiniz? Bərpa kodunuzu istifadə edərək hesabınızdakı bütün iki mərhələli təchizatçıları sıradan çıxara bilərsiniz." + }, + "recoveryCodeTitle": { + "message": "Bərpa kodu" + }, + "authenticatorAppTitle": { + "message": "Kimlik təsdiqləyici tətbiqi" + }, + "authenticatorAppDesc": { + "message": "Vaxt əsaslı təsdiqləmə kodları yaratmaq üçün (Authy və ya Google Authenticator kimi) kimlik təsdiqləyici tətbiq istifadə edin.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP təhlükəsizlik açarı" + }, + "yubiKeyDesc": { + "message": "Hesabınıza müraciət etmək üçün bir YubiKey istifadə edin. YubiKey 4, 4 Nano, 4C və NEO cihazları ilə işləyir." + }, + "duoDesc": { + "message": "Duo Security ilə təsdiqləmək üçün Duo Mobile tətbiqi, SMS, telefon zəngi və ya U2F təhlükəsizlik açarını istifadə edin.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Təşkilatınızını Duo Security ilə təsdiqləmək üçün Duo Mobile tətbiqi, SMS, telefon zəngi və ya U2F təhlükəsizlik açarını istifadə edin.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Hesabınıza müraciət etmək üçün hər hansısa bir WebAuthn fəallaşdırılan təhlükəsizlik açarı istifadə edin." + }, + "emailTitle": { + "message": "E-poçt" + }, + "emailDesc": { + "message": "Təsdiqləmə kodları e-poçt ünvanınıza göndəriləcək." + }, + "loginUnavailable": { + "message": "Giriş edilə bilmir" + }, + "noTwoStepProviders": { + "message": "Bu hesabın iki mərhələli giriş özəlliyi fəaldır, ancaq, konfiqurasiya edilmiş iki mərhələli təchizatçıların heç biri bu cihaz tərəfindən dəstəklənmir." + }, + "noTwoStepProviders2": { + "message": "Zəhmət olmasa daha yaxşı cihazlar (tətbiq təsdiqləyici tətbiqi) arasında dəstəklənən əlavə təchizatçıları əlavə edin." + }, + "twoStepOptions": { + "message": "İki mərhələli giriş seçimləri" + }, + "selfHostedEnvironment": { + "message": "Öz-özünə sahiblik edən mühit" + }, + "selfHostedEnvironmentFooter": { + "message": "Öz-özünə sahiblik edən Bitwarden quraşdırmasının baza URL-sini müəyyənləşdirin." + }, + "customEnvironment": { + "message": "Özəl mühit" + }, + "customEnvironmentFooter": { + "message": "Qabaqcıl istifadəçilər üçündür. Hər xidmətin baza URL-sini müstəqil olaraq müəyyənləşdirə bilərsiniz." + }, + "baseUrl": { + "message": "Server URL-si" + }, + "apiUrl": { + "message": "API server URL-si" + }, + "webVaultUrl": { + "message": "Veb anbar server URL-si" + }, + "identityUrl": { + "message": "Kimlik server URL-si" + }, + "notificationsUrl": { + "message": "Bildiriş server URL-si" + }, + "iconsUrl": { + "message": "Nişan server URL-si" + }, + "environmentSaved": { + "message": "Mühit URL-ləri saxlanıldı." + }, + "ok": { + "message": "Oldu" + }, + "yes": { + "message": "Bəli" + }, + "no": { + "message": "Xeyr" + }, + "overwritePassword": { + "message": "Parolun üzərinə yaz" + }, + "learnMore": { + "message": "Daha ətraflı" + }, + "featureUnavailable": { + "message": "Özəllik əlçatmazdır" + }, + "loggedOut": { + "message": "Çıxış edildi" + }, + "loginExpired": { + "message": "Seansın müddəti bitdi." + }, + "logOutConfirmation": { + "message": "Çıxış etmək istədiyinizə əminsiniz?" + }, + "logOut": { + "message": "Çıxış" + }, + "addNewLogin": { + "message": "Yeni hesab əlavə et" + }, + "addNewItem": { + "message": "Yeni element əlavə et" + }, + "addNewFolder": { + "message": "Yeni qovluq əlavə et" + }, + "view": { + "message": "Bax" + }, + "account": { + "message": "Hesab" + }, + "loading": { + "message": "Yüklənir..." + }, + "lockVault": { + "message": "Anbarı kilidlə" + }, + "passwordGenerator": { + "message": "Parol yaradıcı" + }, + "contactUs": { + "message": "Bizimlə əlaqə" + }, + "getHelp": { + "message": "Kömək alın" + }, + "fileBugReport": { + "message": "Xəta hesabatı göndərin" + }, + "blog": { + "message": "Bloq" + }, + "followUs": { + "message": "Bizi izləyin" + }, + "syncVault": { + "message": "Anbarı eyniləşdir" + }, + "changeMasterPass": { + "message": "Ana parolu dəyişdir" + }, + "changeMasterPasswordConfirmation": { + "message": "Ana parolunuzu bitwarden.com veb anbarında dəyişdirə bilərsiniz. İndi saytı ziyarət etmək istəyirsiniz?" + }, + "fingerprintPhrase": { + "message": "Barmaq izi ifadəsi", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Hesabınızın barmaq izi ifadəsi", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Veb anbara get" + }, + "getMobileApp": { + "message": "Mobil tətbiqə get" + }, + "getBrowserExtension": { + "message": "Səyyah genişləndirməsini əldə et" + }, + "syncingComplete": { + "message": "Eyniləşdirmə tamamlandı" + }, + "syncingFailed": { + "message": "Uğursuz eyniləşdirmə" + }, + "yourVaultIsLocked": { + "message": "Anbarınız kilidlənib. Davam etmək üçün ana parolunuzu təsdiqləyin." + }, + "unlock": { + "message": "Kilidi aç" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ üzərində $EMAIL$ kimi giriş edildi.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Etibarsız ana parol" + }, + "twoStepLoginConfirmation": { + "message": "İki mərhələli giriş, təhlükəsizlik açarı, kimlik təsdiqləyici tətbiq, SMS, telefon zəngi və ya e-poçt kimi digər cihazlarla girişinizi təsdiqləməyinizi tələb edərək hesabınızı daha da təhlükəsiz edir. İki mərhələli giriş, bitwarden.com veb anbarında fəallaşdırıla bilər. Veb saytı indi ziyarət etmək istəyirsiniz?" + }, + "twoStepLogin": { + "message": "İki mərhələli giriş" + }, + "vaultTimeout": { + "message": "Anbara müraciət bitəcək" + }, + "vaultTimeoutDesc": { + "message": "Anbara müraciətin bitəcəyi vaxtı seçin və seçilən əməliyyatı icra edin." + }, + "immediately": { + "message": "Dərhal" + }, + "tenSeconds": { + "message": "10 saniyə" + }, + "twentySeconds": { + "message": "20 saniyə" + }, + "thirtySeconds": { + "message": "30 saniyə" + }, + "oneMinute": { + "message": "1 dəqiqə" + }, + "twoMinutes": { + "message": "2 dəqiqə" + }, + "fiveMinutes": { + "message": "5 dəqiqə" + }, + "fifteenMinutes": { + "message": "15 dəqiqə" + }, + "thirtyMinutes": { + "message": "30 dəqiqə" + }, + "oneHour": { + "message": "1 saat" + }, + "fourHours": { + "message": "4 saat" + }, + "onIdle": { + "message": "Sistem boşda olanda" + }, + "onSleep": { + "message": "Sistem yatanda" + }, + "onLocked": { + "message": "Sistem kilidlənəndə" + }, + "onRestart": { + "message": "Yenidən başladılanda" + }, + "never": { + "message": "Heç vaxt" + }, + "security": { + "message": "Təhlükəsizlik" + }, + "clearClipboard": { + "message": "Lövhəni təmizlə", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Kopyalanmış dəyərləri lövhədən avtomatik təmizlə.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Veb sayt nişanlarını sıradan çıxart" + }, + "disableFaviconDesc": { + "message": "Veb sayt nişanları, anbarınızda hər bir giriş elementinin yanında tanımağınıza kömək edən bir təsvir təqdim edir." + }, + "enableMinToTray": { + "message": "Bildiriş nişanına kiçildin" + }, + "enableMinToTrayDesc": { + "message": "Pəncərə kiçildiləndə, bildiriş sahəsində bir nişan göstər." + }, + "enableMinToMenuBar": { + "message": "Menyu sətrinə kiçilt" + }, + "enableMinToMenuBarDesc": { + "message": "Pəncərəni kiçildəndə, menyu sətrində bir nişan göstər." + }, + "enableCloseToTray": { + "message": "Bildiriş nişanına bağla" + }, + "enableCloseToTrayDesc": { + "message": "Pəncərə bağlananda, bildiriş sahəsində bir nişan göstər." + }, + "enableCloseToMenuBar": { + "message": "Menyu sətrini bağla" + }, + "enableCloseToMenuBarDesc": { + "message": "Pəncərəni bağlananda, menyu sətrində bir nişan göstər." + }, + "enableTray": { + "message": "Bildiriş sahəsi nişanını fəallaşdır" + }, + "enableTrayDesc": { + "message": "Bildiriş sahəsində həmişə bir nişan göstər." + }, + "startToTray": { + "message": "Bildiriş sahəsi nişanı kimi başlat" + }, + "startToTrayDesc": { + "message": "Tətbiq ilk başladılanda, yalnız bildiriş sahəsi nişanı görünsün." + }, + "startToMenuBar": { + "message": "Menyu sətrini başlat" + }, + "startToMenuBarDesc": { + "message": "Tətbiq ilk başladılanda, menyu sətri sadəcə nişan kimi görünsün." + }, + "openAtLogin": { + "message": "Giriş ediləndə avtomatik başlat" + }, + "openAtLoginDesc": { + "message": "Giriş ediləndə Bitwarden masaüstü tətbiqini avtomatik başlat." + }, + "alwaysShowDock": { + "message": "\"Dock\"da həmişə göstər" + }, + "alwaysShowDockDesc": { + "message": "Menyu sətrinə kiçildiləndə belə Bitwarden nişanını \"Dock\"da göstər." + }, + "confirmTrayTitle": { + "message": "Bildiriş sahəsi nişanını ləğv et" + }, + "confirmTrayDesc": { + "message": "Bu tənzimləməni ləğv etsəniz, bütün əlaqəli tənzimləmələr də ləğv ediləcək." + }, + "language": { + "message": "Dil" + }, + "languageDesc": { + "message": "Tətbiq tərəfindən istifadə edilən dili dəyişdirin. Yenidən başlatma lazımdır." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Tətbiqin rəng temasını dəyişdirin." + }, + "dark": { + "message": "Tünd", + "description": "Dark color" + }, + "light": { + "message": "Açıq", + "description": "Light color" + }, + "copy": { + "message": "Kopyala", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Yeniləmələri yoxla" + }, + "version": { + "message": "Versiya $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Yeniləmək üçün yenidən başlat" + }, + "restartToUpdateDesc": { + "message": "$VERSION_NUM$ versiyası quraşdırılmağa hazırdır. Quraşdırmanı tamamlamaq üçün tətbiqi yenidən başlatmalısınız. Yenidən başladıb indi yeniləmək istəyirsiniz?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Yeniləmə mövcuddur" + }, + "updateAvailableDesc": { + "message": "Bir yeniləmə tapıldı. İndi endirmək istəyirsiniz?" + }, + "restart": { + "message": "Yenidən başlat" + }, + "later": { + "message": "Sonra" + }, + "noUpdatesAvailable": { + "message": "Hazırda heç bir yeniləmə yoxdur. Ən son versiyanı istifadə edirsiniz." + }, + "updateError": { + "message": "Yeniləmə xətası" + }, + "unknown": { + "message": "Bilinməyən" + }, + "copyUsername": { + "message": "İstifadəçi adını kopyala" + }, + "copyNumber": { + "message": "Nömrəni kopyala", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Təhlükəsizlik kodunu kopyala", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium üzvlük" + }, + "premiumManage": { + "message": "Üzvlüyü idarə edin" + }, + "premiumManageAlert": { + "message": "Üzvlüyünüzü bitwarden.com veb anbarında idarə edə bilərsiniz. İndi saytı ziyarət etmək istəyirsiniz?" + }, + "premiumRefresh": { + "message": "Üzvlüyü təzələ" + }, + "premiumNotCurrentMember": { + "message": "Hazırda premium bir üzvlüyünüz yoxdur." + }, + "premiumSignUpAndGet": { + "message": "Premium üzvlük üçün qeydiyyatdan keçin və bunları əldə edin:" + }, + "premiumSignUpStorage": { + "message": "Fayl qoşmaları üçün 1 GB şifrələnmiş saxlama sahəsi." + }, + "premiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F və Duo kimi iki mərhələli giriş seçimləri." + }, + "premiumSignUpReports": { + "message": "Anbarınızın təhlükəsiyini təmin etmək üçün parol gigiyenası, hesab sağlamlığı və verilənlərin pozulması hesabatları." + }, + "premiumSignUpTotp": { + "message": "Anbarınızdakı hesablar üçün TOTP təsdiqləmə kodu (2FA) yaradıcısı." + }, + "premiumSignUpSupport": { + "message": "Prioritet müştəri dəstəyi." + }, + "premiumSignUpFuture": { + "message": "Bütün gələcək premium özəlliklər. Daha çoxu tezliklə!" + }, + "premiumPurchase": { + "message": "Premium satın al" + }, + "premiumPurchaseAlert": { + "message": "Premium üzvlüyü bitwarden.com veb anbarında satın ala bilərsiniz. İndi saytı ziyarət etmək istəyirsiniz?" + }, + "premiumCurrentMember": { + "message": "Premium üzvsünüz!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden-i dəstəklədiyiniz üçün təşəkkürlər." + }, + "premiumPrice": { + "message": "Hamısı sadəcə ildə $PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Təzələmə tamamlandı" + }, + "passwordHistory": { + "message": "Parol tarixçəsi" + }, + "clear": { + "message": "Təmizlə", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Siyahılanacaq heç bir parol yoxdur." + }, + "undo": { + "message": "Geri al" + }, + "redo": { + "message": "Təkrarla" + }, + "cut": { + "message": "Kəs", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Yapışdır", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Hamısını seç" + }, + "zoomIn": { + "message": "Yaxınlaşdır" + }, + "zoomOut": { + "message": "Uzaqlaşdır" + }, + "resetZoom": { + "message": "Yaxınlaşdırmanı sıfırla" + }, + "toggleFullScreen": { + "message": "Tam ekranı aç/bağla" + }, + "reload": { + "message": "Təkrar yüklə" + }, + "toggleDevTools": { + "message": "Tərtibatçı alətlərini aç/bağla" + }, + "minimize": { + "message": "Kiçilt", + "description": "Minimize window" + }, + "zoom": { + "message": "Yaxınlaşdır" + }, + "bringAllToFront": { + "message": "Tamamını Önə Gətir", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Bitwarden haqqında" + }, + "services": { + "message": "Xidmətlər" + }, + "hideBitwarden": { + "message": "Bitwarden-i gizlət" + }, + "hideOthers": { + "message": "Digərlərini gizlət" + }, + "showAll": { + "message": "Hamısını göstər" + }, + "quitBitwarden": { + "message": "Bitwarden-dən çıx" + }, + "valueCopied": { + "message": "$VALUE$ kopyalandı", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Kömək" + }, + "window": { + "message": "Pəncərə" + }, + "checkPassword": { + "message": "Parolunuzun oğurlanıb oğurlanmadığını yoxlayın." + }, + "passwordExposed": { + "message": "Bu parol, məlumat pozuntularında $VALUE$ dəfə üzə çıxıb. Dəyişdirməyi məsləhət görürük.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Bu parol, məlumat pozuntularında qeydə alınmayıb. Rahatlıqla istifadə edə bilərsiniz." + }, + "baseDomain": { + "message": "Baza domeni", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domen adı", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Tam" + }, + "startsWith": { + "message": "Başlayır" + }, + "regEx": { + "message": "Müntəzəm ifadə", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Uyğunluq aşkarlaması", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "İlkin uyğunluq aşkarlaması", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Seçimləri aç/bağla" + }, + "organization": { + "message": "Təşkilat", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "İlkin" + }, + "exit": { + "message": "Çıxış" + }, + "showHide": { + "message": "Göstər / gizlət", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Bildiriş nişanına gizlət" + }, + "alwaysOnTop": { + "message": "Həmişə üstdə", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Yeniləndi", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parol yeniləndi", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Anbarı ixrac et" + }, + "fileFormat": { + "message": "Fayl formatı" + }, + "warning": { + "message": "XƏBƏRDARLIQ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Anbarın ixracını təsdiqləyin" + }, + "exportWarningDesc": { + "message": "Bu ixrac faylındakı anbar verilənləriniz şifrələnməmiş formatdadır. İxrac edilən faylı saxlamamalı və etibarsız yollarla (e-poçt kimi) göndərməməlisiniz. Bu faylı işiniz bitdikdən sonra dərhal silin." + }, + "encExportKeyWarningDesc": { + "message": "Bu ixrac faylı, hesabınızın şifrələmə açarını istifadə edərək verilənlərinizi şifrələyir. Hesabınızın şifrələmə açarını döndərsəniz, bu ixrac faylının şifrəsini aça bilməyəcəyiniz üçün yenidən ixrac etməli olacaqsınız." + }, + "encExportAccountWarningDesc": { + "message": "Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir ixracı, fərqli bir hesaba idxal edə bilməzsiniz." + }, + "noOrganizationsList": { + "message": "Heç bir təşkilata aid deyilsiniz. Təşkilatlar, elementlərinizi digər istifadəçilərlə təhlükəsiz şəkildə paylaşmağınızı təmin edir." + }, + "noCollectionsInList": { + "message": "Siyahılanacaq heç bir kolleksiya yoxdur." + }, + "ownership": { + "message": "Sahiblik" + }, + "whoOwnsThisItem": { + "message": "Bu elementin sahibi kimdir?" + }, + "strong": { + "message": "Güclü", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Yaxşı", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Zəif", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Zəif ana parol" + }, + "weakMasterPasswordDesc": { + "message": "Seçdiyiniz ana parol zəifdir. Bitwarden hesabınızı daha yaxşı qorumaq üçün güclü bir ana parol (və ya uzun ifadə) istifadə etməlisiniz. Bu ana parol istifadə etmək istədiyinizə əminsiniz?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "PIN ilə kilidi açın" + }, + "setYourPinCode": { + "message": "Bitwarden-in kilidini açmaq üçün PIN kod tənzimləyin. Hər tətbiqdən tam çıxış edəndə PIN tənzimləmələriniz sıfırlanacaq." + }, + "pinRequired": { + "message": "PIN kod lazımdır." + }, + "invalidPin": { + "message": "Etibarsız PIN kod." + }, + "unlockWithWindowsHello": { + "message": "Windows Hello ilə kilidi aç" + }, + "windowsHelloConsentMessage": { + "message": "Bitwarden üçün təsdiqlə." + }, + "unlockWithTouchId": { + "message": "Touch ID kilidini aç" + }, + "touchIdConsentMessage": { + "message": "anbarınızın kilidini açın" + }, + "noAutoPromptWindowsHello": { + "message": "Açılışda Windows Hello üçün soruşma." + }, + "noAutoPromptTouchId": { + "message": "Açılışda Touch ID üçün soruşma." + }, + "lockWithMasterPassOnRestart": { + "message": "Yenidən başladılanda ana parol ilə kilidlə" + }, + "preferences": { + "message": "Tercihlər" + }, + "enableMenuBar": { + "message": "Menyu sətri nişanını fəallaşdır" + }, + "enableMenuBarDesc": { + "message": "Menyu sətrində həmişə bir nişan göstər." + }, + "hideToMenuBar": { + "message": "Menyu sətrini gizlət" + }, + "selectOneCollection": { + "message": "Ən azı bir kolleksiya seçməlisiniz." + }, + "premiumUpdated": { + "message": "Premium-a yüksəltdiniz." + }, + "restore": { + "message": "Bərpa et" + }, + "premiumManageAlertAppStore": { + "message": "Abunəliyinizi App Store-dan idarə edə bilərsiniz. App Store-u indi ziyarət etmək istəyirsiniz?" + }, + "legal": { + "message": "Qanuni", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Xidmət Şərtləri" + }, + "privacyPolicy": { + "message": "Gizlilik Siyasəti" + }, + "unsavedChangesConfirmation": { + "message": "Tərk etmək istədiyinizə əminsiniz? Əgər indi tərk etsəniz, hazırkı məlumatlarınız saxlanılmayacaq." + }, + "unsavedChangesTitle": { + "message": "Saxlanılmamış dəyişikliklər" + }, + "clone": { + "message": "Klonla" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Bir və ya daha çox təşkilat siyasətləri yaradıcı seçimlərinizə təsir edir." + }, + "vaultTimeoutAction": { + "message": "Anbara müraciət vaxtının bitmə əməliyyatı" + }, + "vaultTimeoutActionLockDesc": { + "message": "Kilidli bir anbar, təkrar müraciət etmək üçün ana parolunuzu yenidən yazmağınızı tələb edir." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Çıxış edilmiş bir anbar, təkrar müraciət etmək üçün yenidən kimlik təsdiqləmə tələb edir." + }, + "lock": { + "message": "Kilidlə", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Tullantı qutusu", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Tullantı qutusunda axtar" + }, + "permanentlyDeleteItem": { + "message": "Elementi birdəfəlik sil" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Bu elementi birdəfəlik silmək istədiyinizə əminsiniz?" + }, + "permanentlyDeletedItem": { + "message": "Element birdəfəlik silindi" + }, + "restoreItem": { + "message": "Elementi bərpa et" + }, + "restoreItemConfirmation": { + "message": "Elementi bərpa etmək istədiyinizə əminsiniz?" + }, + "restoredItem": { + "message": "Element bərpa edildi" + }, + "permanentlyDelete": { + "message": "Birdəfəlik sil" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Çıxış edəndə, anbarınıza bütün müraciətiniz dayanacaq və vaxt bitməsindən sonra onlayn kimlik təsdiqləməsi tələb olunacaq. Bu tənzimləməni istifadə etmək istədiyinizə əminsiniz?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Vaxt bitmə əməliyyat təsdiqi" + }, + "enterpriseSingleSignOn": { + "message": "Müəssisə üçün tək daxil olma" + }, + "setMasterPassword": { + "message": "Ana parolu tənzimlə" + }, + "ssoCompleteRegistration": { + "message": "SSO ilə giriş prosesini tamamlamaq üçün zəhmət olmasa anbarınıza müraciət etmək və onu qorumaq üçün bir ana parol tənzimləyin." + }, + "newMasterPass": { + "message": "Yeni ana parol" + }, + "confirmNewMasterPass": { + "message": "Yeni ana parolu təsdiqlə" + }, + "masterPasswordPolicyInEffect": { + "message": "Bir və ya daha çox təşkilat siyasəti, aşağıdakı tələbləri qarşılamaq üçün ana parolunuzu tələb edir:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum mürəkkəblik xalı: $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum uzunluq: $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Bir və ya daha çox böyük hərf ehtiva etməlidir" + }, + "policyInEffectLowercase": { + "message": "Bir və ya daha çox kiçik hərf ehtiva etməlidir" + }, + "policyInEffectNumbers": { + "message": "Bir və ya daha çox rəqəm ehtiva etməlidir" + }, + "policyInEffectSpecial": { + "message": "Bu özəl simvollardan biri və ya daha çoxunu ehtiva etməlidir: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Yeni ana parolunuz siyasət tələblərini qarşılamır." + }, + "acceptPolicies": { + "message": "Bu qutunu işarələyərək aşağıdakılarla razılaşırsınız:" + }, + "acceptPoliciesError": { + "message": "Xidmət Şərtləri və Gizlilik Siyasəti qəbul edilməyib." + }, + "enableBrowserIntegration": { + "message": "Səyyah inteqrasiyasını fəallaşdır" + }, + "enableBrowserIntegrationDesc": { + "message": "Səyyah inteqrasiyası səyyahda biometrik təsdiqləmə üçün istifadə olunur." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Səyyah inteqrasiyası dəstəklənmir" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Təəssüf ki, səyyah inteqrasiyası yalnız Mac App Store versiyasında dəstəklənir." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Səyyah inteqrasiyası dəstəklənmir" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Təəssüf ki, səyyah inteqrasiyası hazır Windows Store versiyasında dəstəklənmir." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Səyyah inteqrasiyası üçün təsdiqləmə tələb et" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Masaüstü tətbiqlə səyyah arasında bağlantı qurularkən barmaq izi ifadəsinin təsdiqlənməsini tələb edərək əlavə bir təhlükəsizlik qatını fəallaşdıra bilərsiniz. Fəal olanda, bu, hər bağlantı qurulanda istifadəçi müdaxiləsi və təsdiqləməsini tələb edir." + }, + "approve": { + "message": "Təsdiqlə" + }, + "verifyBrowserTitle": { + "message": "Səyyah bağlantısını təsdiqlə" + }, + "verifyBrowserDesc": { + "message": "Zəhmət olmasa göstərilən barmaq izinin səyyah genişləndirməsində göstərilən barmaq izi ilə eyni olduğuna əmin olun." + }, + "biometricsNotEnabledTitle": { + "message": "Biometriklə fəal deyil" + }, + "biometricsNotEnabledDesc": { + "message": "Səyyah biometrikləri, əvvəlcə tənzimləmələrdə masaüstü biometriklərinin fəallaşdırılmasını tələb edir." + }, + "personalOwnershipSubmitError": { + "message": "Müəssisə Siyasətinə görə, elementləri şəxsi anbarınızda saxlamağınız məhdudlaşdırılıb. Sahiblik seçimini təşkilat olaraq dəyişdirin və mövcud kolleksiyalar arasından seçim edin." + }, + "hintEqualsPassword": { + "message": "Parol məsləhəti, parolunuzla eyni ola bilməz." + }, + "personalOwnershipPolicyInEffect": { + "message": "Bir təşkilat siyasəti, sahiblik seçimlərinizə təsir edir." + }, + "allSends": { + "message": "Bütün \"Send\"lər", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fayl" + }, + "sendTypeText": { + "message": "Mətn" + }, + "searchSends": { + "message": "\"Send\"ləri axtar", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "\"Send\"ə düzəliş et", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Anbarım" + }, + "text": { + "message": "Mətn" + }, + "deletionDate": { + "message": "Silinmə tarixi" + }, + "deletionDateDesc": { + "message": "\"Send\" göstərilən tarix və saatda birdəfəlik silinəcək.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Bitmə tarixi" + }, + "expirationDateDesc": { + "message": "Əgər tənzimlənsə, göstərilən tarix və vaxtda \"Send\"ə müraciət başa çatacaq.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimal müraciət sayı" + }, + "maxAccessCountDesc": { + "message": "Əgər tənzimlənsə, istifadəçilər maksimal müraciət sayına çatdıqdan sonra bu \"Send\"ə müraciət edə bilməyəcək.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Hazırkı müraciət sayı" + }, + "disableSend": { + "message": "Heç kimin müraciət edə bilməməsi üçün bu \"Send\"i sıradan çıxart.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "İstəyinizə görə istifadəçilərdən bu \"Send\"ə müraciət edərkən parol tələb edə bilərsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Bu \"Send\" ilə bağlı gizli qeydlər.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "\"Send\" bağlantısı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "\"Send\" bağlantısı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "\"Send\"ə müraciət edəndə ilkin olaraq mətni gizlədin", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send yaradıldı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "\"Send\"ə düzəliş edildi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send silindi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Yeni parol" + }, + "whatTypeOfSend": { + "message": "\"Send\"in növü nədir?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send yarat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Göndərmək istədiyiniz mətn." + }, + "sendFileDesc": { + "message": "Göndərmək istədiyiniz fayl." + }, + "days": { + "message": "$DAYS$ gün", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 gün" + }, + "custom": { + "message": "Özəl" + }, + "deleteSendConfirmation": { + "message": "Bu \"Send\"i silmək istədiyinizə əminsiniz?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Send bağlantısını lövhəyə kopyala", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Saxladıqdan sonra bu \"Send\"in paylaşma bağlantısını lövhəmə kopyala." + }, + "sendDisabled": { + "message": "Send sıradan çıxarıldı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Müəssisə siyasətinə görə, yalnız mövcud \"Send\"i silə bilərsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Bağlantını kopyala" + }, + "disabled": { + "message": "Sıradan çıxarıldı" + }, + "maxAccessCountReached": { + "message": "Maksimal müraciət sayına çatıldı" + }, + "expired": { + "message": "Müddəti bitib" + }, + "pendingDeletion": { + "message": "Silinməsi gözlənilir" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn təsdiqləmə" + }, + "hideEmail": { + "message": "E-poçt ünvanımı alıcılardan gizlət." + }, + "sendOptionsPolicyInEffect": { + "message": "Bir və ya daha çox təşkilat siyasətləri \"Send\" seçimlərinizə təsir edir." + }, + "emailVerificationRequired": { + "message": "E-poçt təsdiqləməsi tələb olunur" + }, + "emailVerificationRequiredDesc": { + "message": "Bu özəlliyi istifadə etmək üçün e-poçtunuzu təsdiqləməlisiniz." + }, + "passwordPrompt": { + "message": "Ana parolu təkrar soruş" + }, + "passwordConfirmation": { + "message": "Ana şifrə təsdiqi" + }, + "passwordConfirmationDesc": { + "message": "Bu əməliyyat qorumalıdır, davam etmək üçün zəhmət olmasa kimliyinizi təsdiqləmək üçün ana parolunuzu təkrar daxil edin." + }, + "updatedMasterPassword": { + "message": "Yenilənmiş ana parol" + }, + "updateMasterPassword": { + "message": "Ana parolu yenilə" + }, + "updateMasterPasswordWarning": { + "message": "Ana parolunuz təzəlikcə təşkilatınızdakı bir administrator tərəfindən dəyişdirildi. Anbara müraciət üçün indi yeniləməlisiniz. Davam etsəniz, hazırkı seansdan çıxış etmiş və təkrar giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saata qədər aktiv qalmağa davam edə bilər." + }, + "hours": { + "message": "Saat" + }, + "minutes": { + "message": "Dəqiqə" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt $HOURS$ saat $MINUTES$ dəqiqədir", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Anbar vaxt bitişi, təşkilatınız tərəfindən tənzimlənən məhdudiyyətləri aşır." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Avtomatik qeydiyyat" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Bu təşkilat, sizi \"parol sıfırlama\"da avtomatik olaraq qeydiyyata alan müəssisə siyasətinə sahibdir. Qeydiyyat, təşkilat administratorlarına ana parolunuzu dəyişdirmə icazəsi verəcək." + }, + "vaultExportDisabled": { + "message": "Anbar ixracı sıradan çıxarıldı" + }, + "personalVaultExportPolicyInEffect": { + "message": "Bir və ya daha çox təşkilat siyasəti, fərdi anbarınızı ixrac etməyinizin qarşısını alır." + }, + "addAccount": { + "message": "Hesab əlavə et" + }, + "removeMasterPassword": { + "message": "Ana parolu sil" + }, + "removedMasterPassword": { + "message": "Ana parol silindi." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$, öz-özünə sahiblik edən açar serveri ilə SSO istifadə edir. Bu təşkilatın üzvlərinin giriş etməsi üçün artıq ana parol tələb edilməyəcək.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Təşkilatı tərk et" + }, + "leaveOrganizationConfirmation": { + "message": "Bu təşkilatı tərk etmək istədiyinizə əminsiniz?" + }, + "leftOrganization": { + "message": "Təşkilatı tərk etdiniz." + }, + "ssoKeyConnectorUnavailable": { + "message": "Açar bağlayıcı əlçatan deyil, daha sonra yenidən sınayın." + }, + "lockAllVaults": { + "message": "Bütün anbarları kilidlə" + }, + "accountLimitReached": { + "message": "Eyni vaxtda 5-dən çox hesaba giriş edilə bilməz." + }, + "accountPreferences": { + "message": "Tercihlər" + }, + "appPreferences": { + "message": "Tətbiq tənzimləmələri (Bütün hesablar)" + }, + "accountSwitcherLimitReached": { + "message": "Hesab limiti keçildi. Başqa bir hesab əlavə etmək üçün bir hesabdan çıxış edin." + }, + "settingsTitle": { + "message": "$EMAIL$ üçün tətbiq tənzimləmələri", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Hesabı dəyişdir" + }, + "options": { + "message": "Seçimlər" + }, + "sessionTimeout": { + "message": "Seansınızın vaxtı bitdi. Zəhmət olmasa geri qayıdıb yenidən giriş etməyə cəhd edin." + }, + "exportingPersonalVaultTitle": { + "message": "Şəxsi anbarın ixracı" + }, + "exportingPersonalVaultDescription": { + "message": "Yalnız $EMAIL$ ilə əlaqəli şəxsi anbar elementləri ixrac ediləcək. Təşkilat anbar elementləri daxil edilmir.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Yaradıcı" + }, + "whatWouldYouLikeToGenerate": { + "message": "Nə yaratmaq istəyirsiniz?" + }, + "passwordType": { + "message": "Parol növü" + }, + "regenerateUsername": { + "message": "İstifadəçi adını yenidən yarat" + }, + "generateUsername": { + "message": "İstifadəçi adı yarat" + }, + "usernameType": { + "message": "İstifadəçi adı növü" + }, + "plusAddressedEmail": { + "message": "Plyus ünvanlı e-poçt" + }, + "plusAddressedEmailDesc": { + "message": "E-poçt təchizatçınızın alt ünvan özəlliklərini istifadə et." + }, + "catchallEmail": { + "message": "Catch-all E-poçt" + }, + "catchallEmailDesc": { + "message": "Domeninizin konfiqurasiya edilmiş hamısını yaxalama gələn qutusunu istifadə edin." + }, + "random": { + "message": "Təsadüfi" + }, + "randomWord": { + "message": "Təsadüfi söz" + }, + "websiteName": { + "message": "Veb sayt adı" + }, + "service": { + "message": "Xidmət" + } +} diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json new file mode 100644 index 0000000000..39761bc5a6 --- /dev/null +++ b/apps/desktop/src/locales/be/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Фільтры" + }, + "allItems": { + "message": "Усе элементы" + }, + "favorites": { + "message": "Абраныя" + }, + "types": { + "message": "Тыпы" + }, + "typeLogin": { + "message": "Уліковыя даныя" + }, + "typeCard": { + "message": "Картка" + }, + "typeIdentity": { + "message": "Пасведчанне" + }, + "typeSecureNote": { + "message": "Бяспечныя нататкі" + }, + "folders": { + "message": "Папкі" + }, + "collections": { + "message": "Калекцыі" + }, + "searchVault": { + "message": "Пошук у сховішчы" + }, + "addItem": { + "message": "Дадаць элемент" + }, + "shared": { + "message": "Абагуленыя" + }, + "share": { + "message": "Абагуліць" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Далучэнні" + }, + "viewItem": { + "message": "Прагляд элемента" + }, + "name": { + "message": "Назва" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Новы URI" + }, + "username": { + "message": "Імя карыстальніка" + }, + "password": { + "message": "Пароль" + }, + "passphrase": { + "message": "Парольная фраза" + }, + "editItem": { + "message": "Рэдагаванне элемента" + }, + "emailAddress": { + "message": "Адрас эл. пошты" + }, + "verificationCodeTotp": { + "message": "Код праверкі (TOTP)" + }, + "website": { + "message": "Вэб-сайт" + }, + "notes": { + "message": "Нататкі" + }, + "customFields": { + "message": "Карыстальніцкія палі" + }, + "launch": { + "message": "Запусціць" + }, + "copyValue": { + "message": "Капіяваць значэнне", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Згарнуць пасля капіявання ў буфер абмену" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Згортваць пасля капіявання даных з элемента ў буфер абмену." + }, + "toggleVisibility": { + "message": "Пераключыць бачнасць" + }, + "toggleCollapse": { + "message": "Згарнуць/Разгарнуць", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Імя ўладальніка карткі" + }, + "number": { + "message": "Нумар" + }, + "brand": { + "message": "Тып карткі" + }, + "expiration": { + "message": "Тэрмін дзеяння" + }, + "securityCode": { + "message": "Код бяспекі" + }, + "identityName": { + "message": "Імя" + }, + "company": { + "message": "Кампанія" + }, + "ssn": { + "message": "Нумар сацыяльнага страхавання" + }, + "passportNumber": { + "message": "Нумар пашпарта" + }, + "licenseNumber": { + "message": "Нумар ліцэнзіі" + }, + "email": { + "message": "Электронная пошта" + }, + "phone": { + "message": "Тэлефон" + }, + "address": { + "message": "Адрас" + }, + "premiumRequired": { + "message": "Патрабуецца прэміяльны статус" + }, + "premiumRequiredDesc": { + "message": "Для выкарыстання гэтай функцыі патрабуецца прэміяльны статус." + }, + "errorOccurred": { + "message": "Адбылася памылка." + }, + "error": { + "message": "Памылка" + }, + "january": { + "message": "Студзень" + }, + "february": { + "message": "Люты" + }, + "march": { + "message": "Сакавік" + }, + "april": { + "message": "Красавік" + }, + "may": { + "message": "Май" + }, + "june": { + "message": "Чэрвень" + }, + "july": { + "message": "Ліпень" + }, + "august": { + "message": "Жнівень" + }, + "september": { + "message": "Верасень" + }, + "october": { + "message": "Кастрычнік" + }, + "november": { + "message": "Лістапад" + }, + "december": { + "message": "Снежань" + }, + "ex": { + "message": "напр.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Зварот" + }, + "mr": { + "message": "С-р" + }, + "mrs": { + "message": "С-ня" + }, + "ms": { + "message": "Пані" + }, + "dr": { + "message": "Док." + }, + "expirationMonth": { + "message": "Месяц заканчэння" + }, + "expirationYear": { + "message": "Год заканчэння" + }, + "select": { + "message": "Выбраць" + }, + "other": { + "message": "Iншае" + }, + "generatePassword": { + "message": "Згенерыраваць пароль" + }, + "type": { + "message": "Тып" + }, + "firstName": { + "message": "Імя" + }, + "middleName": { + "message": "Імя па бацьку" + }, + "lastName": { + "message": "Прозвішча" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Радок адрасу 1" + }, + "address2": { + "message": "Радок адрасу 2" + }, + "address3": { + "message": "Радок адрасу 3" + }, + "cityTown": { + "message": "Горад / Пасёлак" + }, + "stateProvince": { + "message": "Рэгіён / Вобласць" + }, + "zipPostalCode": { + "message": "Паштовы індэкс" + }, + "country": { + "message": "Краіна" + }, + "save": { + "message": "Захаваць" + }, + "cancel": { + "message": "Скасаваць" + }, + "delete": { + "message": "Выдаліць" + }, + "favorite": { + "message": "Абраны" + }, + "edit": { + "message": "Рэдагаваць" + }, + "authenticatorKeyTotp": { + "message": "Ключ праверкі сапраўднасці (TOTP)" + }, + "folder": { + "message": "Папка" + }, + "newCustomField": { + "message": "Новае карыстальніцкае поле" + }, + "value": { + "message": "Значэнне" + }, + "dragToSort": { + "message": "Перацягніце для сартавання" + }, + "cfTypeText": { + "message": "Тэкст" + }, + "cfTypeHidden": { + "message": "Схавана" + }, + "cfTypeBoolean": { + "message": "Лагічнае" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Выдаліць" + }, + "nameRequired": { + "message": "Патрэбна назва." + }, + "addedItem": { + "message": "Элемент дададзены" + }, + "editedItem": { + "message": "Элемент адрэдагаваны" + }, + "deleteItem": { + "message": "Выдаліць элемент" + }, + "deleteFolder": { + "message": "Выдаліць папку" + }, + "deleteAttachment": { + "message": "Выдаліць далучэнне" + }, + "deleteItemConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэты элемент?" + }, + "deletedItem": { + "message": "Выдалены элемент" + }, + "overwritePasswordConfirmation": { + "message": "Вы ўпэўнены, што хочаце перазапісаць бягучы пароль?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Без папкі", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Дадаць папку" + }, + "editFolder": { + "message": "Рэдагаваць папку" + }, + "regeneratePassword": { + "message": "Стварыць новы пароль" + }, + "copyPassword": { + "message": "Капіяваць пароль" + }, + "copyUri": { + "message": "Капіяваць URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Даўжыня" + }, + "numWords": { + "message": "Колькасць слоў" + }, + "wordSeparator": { + "message": "Раздзяляльнік слоў" + }, + "capitalize": { + "message": "З вялікай літары", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Уключыць лічбу" + }, + "close": { + "message": "Закрыць" + }, + "minNumbers": { + "message": "Мін. колькасць лічбаў" + }, + "minSpecial": { + "message": "Мін. колькасць сімвалаў", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Пазбягаць неадназначных сімвалаў" + }, + "searchCollection": { + "message": "Пошук у калекцыі" + }, + "searchFolder": { + "message": "Пошук у папцы" + }, + "searchFavorites": { + "message": "Пошук у абраным" + }, + "searchType": { + "message": "Пошук па тыпу", + "description": "Search item type" + }, + "newAttachment": { + "message": "Дадаць новае далучэнне" + }, + "deletedAttachment": { + "message": "Далучэнне выдалена" + }, + "deleteAttachmentConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэта далучэнне?" + }, + "attachmentSaved": { + "message": "Далучэнне захавана." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Выберыце файл." + }, + "maxFileSize": { + "message": "Максімальны памер файла 500 МБ." + }, + "updateKey": { + "message": "Вы не можаце выкарыстоўваць гэту функцыю, пакуль не абнавіце свой ключ шыфравання." + }, + "editedFolder": { + "message": "Папка адрэдагавана" + }, + "addedFolder": { + "message": "Папка дададзена" + }, + "deleteFolderConfirmation": { + "message": "Вы ўпэўнены, што хочаце выдаліць гэту папку?" + }, + "deletedFolder": { + "message": "Папка выдалена" + }, + "loginOrCreateNewAccount": { + "message": "Увайдзіце або стварыце новы ўліковы запіс для доступу да бяспечнага сховішча." + }, + "createAccount": { + "message": "Стварыць уліковы запіс" + }, + "logIn": { + "message": "Увайсці" + }, + "submit": { + "message": "Адправіць" + }, + "masterPass": { + "message": "Асноўны пароль" + }, + "masterPassDesc": { + "message": "Асноўны пароль — ключ да вашага бяспечнага сховішча. Ён вельмі важны, таму не забывайце яго. Аднавіць асноўны пароль немагчыма." + }, + "masterPassHintDesc": { + "message": "Падказка да асноўнага пароля можа дапамагчы вам яго ўспомніць." + }, + "reTypeMasterPass": { + "message": "Увядзіце асноўны пароль паўторна" + }, + "masterPassHint": { + "message": "Падказка да асноўнага пароля (неабавязкова)" + }, + "settings": { + "message": "Налады" + }, + "passwordHint": { + "message": "Падказка да пароля" + }, + "enterEmailToGetHint": { + "message": "Увядзіце адрас электроннай пошты ўліковага запісу для атрымання падказкі для асноўнага пароля." + }, + "getMasterPasswordHint": { + "message": "Атрымаць падказку для асноўнага пароля" + }, + "emailRequired": { + "message": "Патрабуецца адрас электроннай пошты." + }, + "invalidEmail": { + "message": "Памылковы адрас электроннай пошты." + }, + "masterPassRequired": { + "message": "Патрабуецца асноўны пароль." + }, + "masterPassLength": { + "message": "Асноўны пароль павінен быць даўжынёй не менш за 8 сімвалаў." + }, + "masterPassDoesntMatch": { + "message": "Асноўныя паролі не супадаюць." + }, + "newAccountCreated": { + "message": "Ваш уліковы запіс створаны! Вы можаце ўвайсці." + }, + "masterPassSent": { + "message": "Мы адправілі вам на электронную пошту падказку для асноўнага пароля." + }, + "unexpectedError": { + "message": "Адбылася нечаканая памылка." + }, + "itemInformation": { + "message": "Звесткі аб элеменце" + }, + "noItemsInList": { + "message": "Няма элементаў для паказу." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Код праверкі" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Патрабуецца код праверкі." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Працягнуць" + }, + "enterVerificationCodeApp": { + "message": "Увядзіце 6 лічбаў кода праверкі з вашай праграмы праверкі сапраўднасці." + }, + "enterVerificationCodeEmail": { + "message": "Увядзіце 6 лічбаў кода праверкі, які быў адпраўлены на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Адпраўлены ліст для пацвярджэння $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Запомніць мяне" + }, + "sendVerificationCodeEmailAgain": { + "message": "Адправіць код пацвярджэння зноў" + }, + "useAnotherTwoStepMethod": { + "message": "Выкарыстоўваць іншы метад двухэтапнага ўваходу" + }, + "insertYubiKey": { + "message": "Устаўце ваш YubiKey ў порт USB вашага камп'ютара, затым націсніце на кнопку." + }, + "insertU2f": { + "message": "Устаўце ваш ключ бяспекі ў порт USB вашага камп'ютара. Калі на ім ёсць кнопка, націсніце на яе." + }, + "recoveryCodeDesc": { + "message": "Згубілі доступ да ўсіх варыянтаў двухэтапнага ўваходу? Скарыстайцеся кодам аднаўлення, каб адключыць двухэтапны ўваход для вашага ўліковага запісу." + }, + "recoveryCodeTitle": { + "message": "Код аднаўлення" + }, + "authenticatorAppTitle": { + "message": "Праграма праверкі сапраўднасці" + }, + "authenticatorAppDesc": { + "message": "Выкарыстоўвайце праграму для праверкі сапраўднасці (напрыклад, Authy або Google Authenticator) для стварэння кодаў праверкі на аснове часу.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Ключ бяспекі YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Выкарыстоўвайце YubiKey для доступу да вашага ўліковага запісу. Працуе з прыладамі YubiKey серый 4, 5 і NEO." + }, + "duoDesc": { + "message": "Пацвярдзіце з дапамогай Duo Security, выкарыстоўваючы праграму Duo Mobile, SMS, тэлефонны выклік або ключ бяспекі.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Пацвярдзіце з дапамогай Duo Security для вашай арганізацыі, выкарыстоўваючы праграму Duo Mobile, SMS, тэлефонны выклік або ключ бяспекі.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Электронная пошта" + }, + "emailDesc": { + "message": "Коды пацвярджэння будуць адпраўлены вам па электроннай пошце." + }, + "loginUnavailable": { + "message": "Уваход недаступны" + }, + "noTwoStepProviders": { + "message": "У гэтага ўліковага запісу ўключаны двухэтапны ўваход, аднак ні адзін з наладжаных варыянтаў не падтрымліваецца гэтай прыладай." + }, + "noTwoStepProviders2": { + "message": "Дадайце дадатковыя варыянты двухэтапнага ўваходу, якія падтрымліваюцца большасцю прылад (напрыклад, праграма праверкі сапраўднасці)." + }, + "twoStepOptions": { + "message": "Параметры двухэтапнага ўваходу" + }, + "selfHostedEnvironment": { + "message": "Асяроддзе ўласнага хостынгу" + }, + "selfHostedEnvironmentFooter": { + "message": "Увядзіце асноўны URL-адрас на вашым серверы." + }, + "customEnvironment": { + "message": "Налады асяроддзя" + }, + "customEnvironmentFooter": { + "message": "Для вопытных карыстальнікаў. Можна ўвесці URL-адрасы асобна для кожнай службы." + }, + "baseUrl": { + "message": "URL-адрас сервера" + }, + "apiUrl": { + "message": "API URL-адраса сервера" + }, + "webVaultUrl": { + "message": "URL-адрас сервера вэб-сховішча" + }, + "identityUrl": { + "message": "URL-адрас сервера ідэнтыфікацыі" + }, + "notificationsUrl": { + "message": "URL-адрас сервера апавяшчэнняў" + }, + "iconsUrl": { + "message": "URL-адрас сервера значкоў" + }, + "environmentSaved": { + "message": "URL-адрас сервера асяроддзя захаваны." + }, + "ok": { + "message": "ОК" + }, + "yes": { + "message": "Так" + }, + "no": { + "message": "Не" + }, + "overwritePassword": { + "message": "Перазапісаць пароль" + }, + "learnMore": { + "message": "Даведацца больш" + }, + "featureUnavailable": { + "message": "Функцыя недаступна" + }, + "loggedOut": { + "message": "Вы выйшлі са сховішча" + }, + "loginExpired": { + "message": "Скончыўся тэрмін дзеяння вашага сеансу." + }, + "logOutConfirmation": { + "message": "Вы ўпэўнены, што хочаце выйсці?" + }, + "logOut": { + "message": "Выйсці" + }, + "addNewLogin": { + "message": "Дадаць новыя ўліковыя даныя" + }, + "addNewItem": { + "message": "Дадаць новы элемент" + }, + "addNewFolder": { + "message": "Дадаць новую папку" + }, + "view": { + "message": "Выгляд" + }, + "account": { + "message": "Уліковы запіс" + }, + "loading": { + "message": "Загрузка..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Генератар пароляў" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Паведаміць аб памылцы" + }, + "blog": { + "message": "Блог" + }, + "followUs": { + "message": "Падпісвайцеся" + }, + "syncVault": { + "message": "Сінхранізаваць сховішча" + }, + "changeMasterPass": { + "message": "Змяніць асноўны пароль" + }, + "changeMasterPasswordConfirmation": { + "message": "Вы можаце змяніць свой асноўны пароль на bitwarden.com. Перайсці на сайт зараз?" + }, + "fingerprintPhrase": { + "message": "Фраза адбітка пальца", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Фраза адбітка пальца вашага ўліковага запісу", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Перайсці ў вэб-сховішча" + }, + "getMobileApp": { + "message": "Атрымаць мабільную праграму" + }, + "getBrowserExtension": { + "message": "Атрымаць пашырэнне для браўзера" + }, + "syncingComplete": { + "message": "Сінхранізацыя завершана" + }, + "syncingFailed": { + "message": "Памылка сінхранізацыі" + }, + "yourVaultIsLocked": { + "message": "Ваша сховішча заблакіравана. Каб працягнуць, увядзіце асноўны пароль." + }, + "unlock": { + "message": "Разблакіраваць" + }, + "loggedInAsOn": { + "message": "Выкананы ўваход на $HOSTNAME$ як $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Памылковы асноўны пароль" + }, + "twoStepLoginConfirmation": { + "message": "Двухэтапны ўваход робіць ваш уліковы запіс больш бяспечным, патрабуючы пацвярджэння ўваходу на іншай прыладзе, напрыклад, ключом бяспекі, праграмай для праверкі бяспекі, SMS, тэлефонным выклікам або электроннай поштай. Двухэтапны ўваход уключаецца на bitwarden.com. Перайсці на сайт зараз?" + }, + "twoStepLogin": { + "message": "Двухэтапны ўваход" + }, + "vaultTimeout": { + "message": "Тайм-аўт сховішча" + }, + "vaultTimeoutDesc": { + "message": "Выберыце тайм-аўт для сховішча і дзеянне, якое неабходна зрабіць." + }, + "immediately": { + "message": "Адразу" + }, + "tenSeconds": { + "message": "10 секунд" + }, + "twentySeconds": { + "message": "20 секунд" + }, + "thirtySeconds": { + "message": "30 секунд" + }, + "oneMinute": { + "message": "1 хвіліна" + }, + "twoMinutes": { + "message": "2 хвіліны" + }, + "fiveMinutes": { + "message": "5 хвілін" + }, + "fifteenMinutes": { + "message": "15 хвілін" + }, + "thirtyMinutes": { + "message": "30 хвілін" + }, + "oneHour": { + "message": "1 гадзіна" + }, + "fourHours": { + "message": "4 гадзіны" + }, + "onIdle": { + "message": "Пры бяздзейнасці" + }, + "onSleep": { + "message": "У рэжыме сну" + }, + "onLocked": { + "message": "Разам з камп'ютарам" + }, + "onRestart": { + "message": "Пры перазапуску" + }, + "never": { + "message": "Ніколі" + }, + "security": { + "message": "Бяспека" + }, + "clearClipboard": { + "message": "Ачыстка буфера абмену", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Аўтаматычна ачышчаць скапіяваныя значэнні з вашага буфера абмену.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Адключыць значкі вэб-сайтаў" + }, + "disableFaviconDesc": { + "message": "Значкі вэб-сайтаў паказваюцца з кожным элементам у вашым сховішчы." + }, + "enableMinToTray": { + "message": "Згарунць у вобласць апавяшчэнняў" + }, + "enableMinToTrayDesc": { + "message": "Пры згортванні акна, будзе паказвацца значок у вообласці апавяшчэнняў." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Закрываць у вобласць апавяшчэнняў" + }, + "enableCloseToTrayDesc": { + "message": "Пры закрыцці акна, будзе паказвацца значок у вообласці апавяшчэнняў." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Уключыць значок у вобласці апавяшчэнняў" + }, + "enableTrayDesc": { + "message": "Заўсёды паказваць значок у вобласці апавяшчэнняў." + }, + "startToTray": { + "message": "Запускаць у згорнутым выглядзе" + }, + "startToTrayDesc": { + "message": "Пры першым запуску праграмы, будзе паказвацца значок у вобласці апавяшчэнняў." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Мова" + }, + "languageDesc": { + "message": "Змена мовы, якая выкарыстоўваецца праграмай. Патрабуецца перазапуск." + }, + "theme": { + "message": "Тэма" + }, + "themeDesc": { + "message": "Змена колеравай тэмы праграмы." + }, + "dark": { + "message": "Цёмная", + "description": "Dark color" + }, + "light": { + "message": "Светлая", + "description": "Light color" + }, + "copy": { + "message": "Капіяваць", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Праверыць абнаўленні" + }, + "version": { + "message": "Версія $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Перазапуск для абнаўлення" + }, + "restartToUpdateDesc": { + "message": "Версія $VERSION_NUM$ гатовая да ўсталявання. Вы павінны перазапусціць праграму, каб завершыць усталяванне. Вы хочаце перазапусціць і абнавіць зараз?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Даступна абнаўленне" + }, + "updateAvailableDesc": { + "message": "Знойдзена абнаўленне. Спампаваць яго зараз?" + }, + "restart": { + "message": "Перазапусціць" + }, + "later": { + "message": "Пазней" + }, + "noUpdatesAvailable": { + "message": "Абнаўленняў няма. Вы выкарыстоўваеце апошнюю версію." + }, + "updateError": { + "message": "Памылка абнаўлення" + }, + "unknown": { + "message": "Невядома" + }, + "copyUsername": { + "message": "Капіяваць імя карыстальніка" + }, + "copyNumber": { + "message": "Капіяваць нумар", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Капіяваць код бяспекі", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Прэміяльны статус" + }, + "premiumManage": { + "message": "Кіраванне статусам" + }, + "premiumManageAlert": { + "message": "Вы можаце кіраваць сваім статусам на bitwarden.com. Перайсці на сайт зараз?" + }, + "premiumRefresh": { + "message": "Абнавіць статус" + }, + "premiumNotCurrentMember": { + "message": "На дадзены момант у вас не прэміяльны статус." + }, + "premiumSignUpAndGet": { + "message": "Падпішыцеся на прэміяльны статус і атрымайце:" + }, + "premiumSignUpStorage": { + "message": "1 ГБ зашыфраванага сховішча для далучаных файлаў." + }, + "premiumSignUpTwoStep": { + "message": "Дадатковыя варыянты двухэтапнага ўваходу, такія як YubiKey, FIDO U2F і Duo." + }, + "premiumSignUpReports": { + "message": "Гігіена пароляў, здароўе ўліковага запісу і справаздачы аб уцечках даных для забеспячэння бяспекі вашага сховішча." + }, + "premiumSignUpTotp": { + "message": "TOTP-генератар кодаў (2ФА) для ўліковых даных вашага сховішча." + }, + "premiumSignUpSupport": { + "message": "Прыярытэтная падтрымка." + }, + "premiumSignUpFuture": { + "message": "Усе будучыя функцыі прэміяльнага статусу. Іх будзе больш!" + }, + "premiumPurchase": { + "message": "Купіць прэміяльны статус" + }, + "premiumPurchaseAlert": { + "message": "Вы можаце купіць прэміяльны статус на bitwarden.com. Перайсці на сайт зараз?" + }, + "premiumCurrentMember": { + "message": "У вас прэміяльны статус!" + }, + "premiumCurrentMemberThanks": { + "message": "Дзякуем вам за падтрымку Bitwarden." + }, + "premiumPrice": { + "message": "Усяго толькі за $PRICE$ на год!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Абнаўленне завершана" + }, + "passwordHistory": { + "message": "Гісторыя пароляў" + }, + "clear": { + "message": "Ачысціць", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Няма пароляў для паказу." + }, + "undo": { + "message": "Адрабіць" + }, + "redo": { + "message": "Вярнуць" + }, + "cut": { + "message": "Выразаць", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Уставіць", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Выбраць усё" + }, + "zoomIn": { + "message": "Павялічыць" + }, + "zoomOut": { + "message": "Паменшыць" + }, + "resetZoom": { + "message": "Скінуць маштаб" + }, + "toggleFullScreen": { + "message": "Пераключыць поўнаэкранны рэжым" + }, + "reload": { + "message": "Перазагрузка" + }, + "toggleDevTools": { + "message": "Пераключыць інструменты для распрацоўшчыкаў" + }, + "minimize": { + "message": "Згарнуць", + "description": "Minimize window" + }, + "zoom": { + "message": "Маштаб" + }, + "bringAllToFront": { + "message": "На пярэдні план", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Пра Bitwarden" + }, + "services": { + "message": "Службы" + }, + "hideBitwarden": { + "message": "Схаваць Bitwarden" + }, + "hideOthers": { + "message": "Схаваць іншыя" + }, + "showAll": { + "message": "Паказаць усе" + }, + "quitBitwarden": { + "message": "Выйсці з Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ скапіяваны(-а)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Даведка" + }, + "window": { + "message": "Акно" + }, + "checkPassword": { + "message": "Праверце, ці не скампраметаваны пароль." + }, + "passwordExposed": { + "message": "Гэты пароль быў скампраметаваны $VALUE$ раз(-ы/-оў). Вы павінны змяніць яго.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Гэты пароль не быў знойдзены ў вядомых базах уцечак. Можна працягваць яго выкарыстоўваць." + }, + "baseDomain": { + "message": "Асноўны дамен", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Хост", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Дакладна" + }, + "startsWith": { + "message": "Пачынаецца з" + }, + "regEx": { + "message": "Рэгулярны выраз", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Выяўленне супадзенняў", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Метад выяўлення па змаўчанні", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Пераключыць параметры" + }, + "organization": { + "message": "Арганізацыя", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Па змаўчанні" + }, + "exit": { + "message": "Выхад" + }, + "showHide": { + "message": "Паказаць / Схаваць", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Схаваць у вобласць апавяшчэнняў" + }, + "alwaysOnTop": { + "message": "Па-над усімі вокнамі", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Абноўлена", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль абноўлены", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Экспарт сховішча" + }, + "fileFormat": { + "message": "Фармат файла" + }, + "warning": { + "message": "УВАГА", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "Экспартуемы файл утрымлівае даныя вашага сховішча ў незашыфраваным фармаце. Яго не варта захоўваць ці адпраўляць па небяспечным каналам (напрыклад, па электроннай пошце). Выдаліце яго адразу пасля выкарыстання." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "Вы не з'яўляецеся членам якой-небудзь арганізацыі. Арганізацыі дазваляюць бяспечна абменьвацца элементамі з іншымі карыстальнікамі." + }, + "noCollectionsInList": { + "message": "Няма калекцый для паказу." + }, + "ownership": { + "message": "Уладальнік" + }, + "whoOwnsThisItem": { + "message": "Каму належыць гэты элемент?" + }, + "strong": { + "message": "Моцны", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Добры", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Слабы", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слабы асноўны пароль" + }, + "weakMasterPasswordDesc": { + "message": "Асноўны пароль, выбраны вамі, з'яўляецца слабым. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць моцны асноўны пароль (або парольную фразу). Вы ўпэўнены, што хочаце выкарыстоўваць гэты асноўны пароль?" + }, + "pin": { + "message": "PIN-код", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Разблакіраваць PIN-кодам" + }, + "setYourPinCode": { + "message": "Задайце PIN-код для разблакіроўкі Bitwarden. Налады PIN-кода будуць скінуты, калі вы калі-небудзь цалкам выйдзеце з праграмы." + }, + "pinRequired": { + "message": "Патрабуецца PIN-код." + }, + "invalidPin": { + "message": "Памылковы PIN-код." + }, + "unlockWithWindowsHello": { + "message": "Разблакіраваць з Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Праверыць на Bitwarden." + }, + "unlockWithTouchId": { + "message": "Разблакіраваць з Touch ID" + }, + "touchIdConsentMessage": { + "message": "Праверыць на Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Блакіраваць асноўным паролем пры перазапуску" + }, + "preferences": { + "message": "Налады" + }, + "enableMenuBar": { + "message": "Уключыць значок у радку меню" + }, + "enableMenuBarDesc": { + "message": "Заўсёды паказваць значок у радку меню." + }, + "hideToMenuBar": { + "message": "Схаваць у радку меню" + }, + "selectOneCollection": { + "message": "Вы павінны выбраць прынамсі адну калекцыю." + }, + "premiumUpdated": { + "message": "Вы абнавіліся да прэміяльнага статусу." + }, + "restore": { + "message": "Аднавіць" + }, + "premiumManageAlertAppStore": { + "message": "Вы можаце кіраваць сваёй падпіскай з App Store. Вы хочаце наведаць App Store?" + }, + "legal": { + "message": "Правы", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Умовы выкарыстання" + }, + "privacyPolicy": { + "message": "Палітыка прыватнасці" + }, + "unsavedChangesConfirmation": { + "message": "Вы ўпэўнены, што хочаце выйсці? У такім выпадку, ваша інфармацыя не будзе захавана." + }, + "unsavedChangesTitle": { + "message": "Незахаваныя змены" + }, + "clone": { + "message": "Кланіраваць" + }, + "passwordGeneratorPolicyInEffect": { + "message": "На налады генератара ўплываюць адна або некалькі палітык арганізацый." + }, + "vaultTimeoutAction": { + "message": "Дзеянне пры тайм-аўце" + }, + "vaultTimeoutActionLockDesc": { + "message": "Для разблакіроўкі сховішча патрабуецца паўторна ўвесці асноўны пароль." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Выхад са сховішча спатрабуе паўторную праверку сапраўднасці для атрымання доступу да яго." + }, + "lock": { + "message": "Заблакіраваць", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Сметніца", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Пошук у сметніцы" + }, + "permanentlyDeleteItem": { + "message": "Выдаліць назаўсёды" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Вы ўпэўнены, што хочаце назаўсёды выдаліць гэты элемент?" + }, + "permanentlyDeletedItem": { + "message": "Выдаленны назаўсёды элемент" + }, + "restoreItem": { + "message": "Аднавіць элемент" + }, + "restoreItemConfirmation": { + "message": "Вы сапраўды жадаеце аднавіць гэты элемент?" + }, + "restoredItem": { + "message": "Элемент адноўлены" + }, + "permanentlyDelete": { + "message": "Выдаліць назаўсёды" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Выхад з сістэмы выдаліць доступ да сховішча і спатрабуе праверку сапраўднасці анлайн па заканчэнні перыяду чакання. Вы сапраўды жадаеце ўключыць гэтую наладу?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Пацвярджэнне дзеяння для тайм-аута" + }, + "enterpriseSingleSignOn": { + "message": "Адзіны ўваход у карпаратыўную сістэму (SSO)" + }, + "setMasterPassword": { + "message": "Задаць асноўны пароль" + }, + "ssoCompleteRegistration": { + "message": "Для завяршэння ўваходу праз SSO, задайце асноўны пароль для доступу і абароны вашаго сховішча." + }, + "newMasterPass": { + "message": "Новы асноўны пароль" + }, + "confirmNewMasterPass": { + "message": "Пацвердзіць новы асноўны пароль" + }, + "masterPasswordPolicyInEffect": { + "message": "Згодна з адной або некалькімі палітыкамі арганізацыі неабходна, каб ваш асноўны пароль адказваў наступным патрабаванням:" + }, + "policyInEffectMinComplexity": { + "message": "Мінімальны ўзровень складанасці $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Мінімальная даўжыня $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Уключыць адну ці больш прапісных літар" + }, + "policyInEffectLowercase": { + "message": "Уключыць адну ці больш малых літар" + }, + "policyInEffectNumbers": { + "message": "Уключыць адну ці больш лічбаў" + }, + "policyInEffectSpecial": { + "message": "Уключаць хаця б адзін з наступных спецыяльных сімвалаў $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Ваш новы асноўны пароль не адпавядае патрабаванням палітыкі арганізацыі." + }, + "acceptPolicies": { + "message": "Ставячы гэты сцяжок вы пагаджаецеся з наступным:" + }, + "acceptPoliciesError": { + "message": "Умовы выкарыстання і Палітыка прыватнасці не былі пацверджаны." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "Усе адпраўленні", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Тэкст" + }, + "searchSends": { + "message": "Пошук адпраўленняў", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Рэдагаваць адпраўленне", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Маё сховішча" + }, + "text": { + "message": "Тэкст" + }, + "deletionDate": { + "message": "Дата выдалення" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Дата завяршэння" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Даслаць спасылку", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Новы пароль" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Стварыць адпраўленне", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Тэкст, які вы хочаце адправіць." + }, + "sendFileDesc": { + "message": "Файл, які вы хочаце адправіць." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Адвольны" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Скапіяваць спасылку адпраўлення ў буфер абмену", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Капіяваць спасылку" + }, + "disabled": { + "message": "Адключана" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Пацвярджэнне асноўнага пароля" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json new file mode 100644 index 0000000000..9a044a3c8d --- /dev/null +++ b/apps/desktop/src/locales/bg/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Филтри" + }, + "allItems": { + "message": "Всички елементи" + }, + "favorites": { + "message": "Любими" + }, + "types": { + "message": "Видове" + }, + "typeLogin": { + "message": "Запис" + }, + "typeCard": { + "message": "Карта" + }, + "typeIdentity": { + "message": "Самоличност" + }, + "typeSecureNote": { + "message": "Защитена бележка" + }, + "folders": { + "message": "Папки" + }, + "collections": { + "message": "Колекции" + }, + "searchVault": { + "message": "Търсене в трезора" + }, + "addItem": { + "message": "Добавяне на елемент" + }, + "shared": { + "message": "Споделено" + }, + "share": { + "message": "Споделяне" + }, + "moveToOrganization": { + "message": "Преместване в организация" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ се премести в $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Изберете организацията, в която искате да преместите записа. Преместването прехвърля собствеността му към новата организация. След това няма вече директно да го притежавате." + }, + "attachments": { + "message": "Прикачени файлове" + }, + "viewItem": { + "message": "Преглед на елемента" + }, + "name": { + "message": "Наименование" + }, + "uri": { + "message": "Адрес" + }, + "uriPosition": { + "message": "Адрес $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Нов адрес" + }, + "username": { + "message": "Потребителско име" + }, + "password": { + "message": "Парола" + }, + "passphrase": { + "message": "Парола-фраза" + }, + "editItem": { + "message": "Редактиране на елемента" + }, + "emailAddress": { + "message": "Е-поща" + }, + "verificationCodeTotp": { + "message": "Код за потвърждаване (TOTP)" + }, + "website": { + "message": "Сайт" + }, + "notes": { + "message": "Бележки" + }, + "customFields": { + "message": "Допълнителни полета" + }, + "launch": { + "message": "Пускане" + }, + "copyValue": { + "message": "Копиране на стойността", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Минимизиране при копиране" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Минимизиране при копиране на данните на записа." + }, + "toggleVisibility": { + "message": "Превключване на видимостта" + }, + "toggleCollapse": { + "message": "Превключване на свиването", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Име на притежателя на картата" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Вид" + }, + "expiration": { + "message": "Изтичане" + }, + "securityCode": { + "message": "Код за сигурност" + }, + "identityName": { + "message": "Име на самоличността" + }, + "company": { + "message": "Фирма" + }, + "ssn": { + "message": "№ на осигуровката" + }, + "passportNumber": { + "message": "№ на паспорта" + }, + "licenseNumber": { + "message": "№ на лиценза" + }, + "email": { + "message": "Е-поща" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адрес" + }, + "premiumRequired": { + "message": "Изисква се платен абонамент" + }, + "premiumRequiredDesc": { + "message": "За да се възползвате от тази възможност, трябва да ползвате платен абонамент." + }, + "errorOccurred": { + "message": "Възникна грешка." + }, + "error": { + "message": "Грешка" + }, + "january": { + "message": "януари" + }, + "february": { + "message": "февруари" + }, + "march": { + "message": "март" + }, + "april": { + "message": "април" + }, + "may": { + "message": "май" + }, + "june": { + "message": "юни" + }, + "july": { + "message": "юли" + }, + "august": { + "message": "август" + }, + "september": { + "message": "септември" + }, + "october": { + "message": "октомври" + }, + "november": { + "message": "ноември" + }, + "december": { + "message": "декември" + }, + "ex": { + "message": "напр.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Обръщение" + }, + "mr": { + "message": "Г-н" + }, + "mrs": { + "message": "Г-жа" + }, + "ms": { + "message": "Г-жа" + }, + "dr": { + "message": "Д-р" + }, + "expirationMonth": { + "message": "Месец на изтичане" + }, + "expirationYear": { + "message": "Година на изтичане" + }, + "select": { + "message": "Избор" + }, + "other": { + "message": "Други" + }, + "generatePassword": { + "message": "Нова парола" + }, + "type": { + "message": "Вид" + }, + "firstName": { + "message": "Собствено име" + }, + "middleName": { + "message": "Презиме" + }, + "lastName": { + "message": "Фамилно име" + }, + "fullName": { + "message": "Пълно име" + }, + "address1": { + "message": "Адрес 1" + }, + "address2": { + "message": "Адрес 2" + }, + "address3": { + "message": "Адрес 3" + }, + "cityTown": { + "message": "Населено място" + }, + "stateProvince": { + "message": "Област" + }, + "zipPostalCode": { + "message": "Пощенски код" + }, + "country": { + "message": "Държава" + }, + "save": { + "message": "Запазване" + }, + "cancel": { + "message": "Отказ" + }, + "delete": { + "message": "Изтриване" + }, + "favorite": { + "message": "Любими" + }, + "edit": { + "message": "Редактиране" + }, + "authenticatorKeyTotp": { + "message": "Удостоверителен ключ (TOTP)" + }, + "folder": { + "message": "Папка" + }, + "newCustomField": { + "message": "Ново допълнително поле" + }, + "value": { + "message": "Стойност" + }, + "dragToSort": { + "message": "Подредба чрез влачене" + }, + "cfTypeText": { + "message": "Текст" + }, + "cfTypeHidden": { + "message": "Скрито" + }, + "cfTypeBoolean": { + "message": "Булево" + }, + "cfTypeLinked": { + "message": "Свързано", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Свързана стойност", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Премахване" + }, + "nameRequired": { + "message": "Името е задължително." + }, + "addedItem": { + "message": "Елементът е добавен" + }, + "editedItem": { + "message": "Елементът е редактиран" + }, + "deleteItem": { + "message": "Изтриване на елемента" + }, + "deleteFolder": { + "message": "Изтриване на папка" + }, + "deleteAttachment": { + "message": "Изтриване на прикачения файл" + }, + "deleteItemConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете елемента?" + }, + "deletedItem": { + "message": "Елементът е изтрит" + }, + "overwritePasswordConfirmation": { + "message": "Сигурни ли сте, че искате да обновите текущата парола?" + }, + "overwriteUsername": { + "message": "Замяна на потребителското име" + }, + "overwriteUsernameConfirmation": { + "message": "Наостина ли искате да замените текущото потребителско име?" + }, + "noneFolder": { + "message": "Няма папка", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Добавяне на папка" + }, + "editFolder": { + "message": "Редактиране на папка" + }, + "regeneratePassword": { + "message": "Пресъздаване на паролата" + }, + "copyPassword": { + "message": "Копиране на паролата" + }, + "copyUri": { + "message": "Копиране на адреса" + }, + "copyVerificationCodeTotp": { + "message": "Код за потвърждаване (TOTP)" + }, + "length": { + "message": "Дължина" + }, + "numWords": { + "message": "Брой думи" + }, + "wordSeparator": { + "message": "Разделител за думи" + }, + "capitalize": { + "message": "Главни букви", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "И цифри" + }, + "close": { + "message": "Затваряне" + }, + "minNumbers": { + "message": "Минимален брой цифри" + }, + "minSpecial": { + "message": "Минимален брой специални знаци", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Без нееднозначни знаци" + }, + "searchCollection": { + "message": "Търсене в колекцията" + }, + "searchFolder": { + "message": "Търсене в папката" + }, + "searchFavorites": { + "message": "Търсене в любими" + }, + "searchType": { + "message": "Търсене по вид", + "description": "Search item type" + }, + "newAttachment": { + "message": "Прикачване на файл" + }, + "deletedAttachment": { + "message": "Прикаченият файл е изтрит" + }, + "deleteAttachmentConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете прикачения файл?" + }, + "attachmentSaved": { + "message": "Прикаченият файл е запазен." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Избор на файл." + }, + "maxFileSize": { + "message": "Големината на файла е най-много 500 MB." + }, + "updateKey": { + "message": "Трябва да обновите шифриращия си ключ, за да използвате тази възможност." + }, + "editedFolder": { + "message": "Редактирана папка" + }, + "addedFolder": { + "message": "Добавена папка" + }, + "deleteFolderConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете тази папка?" + }, + "deletedFolder": { + "message": "Изтрита папка" + }, + "loginOrCreateNewAccount": { + "message": "Впишете се или създайте нов абонамент, за да достъпите защитен трезор." + }, + "createAccount": { + "message": "Създаване на абонамент" + }, + "logIn": { + "message": "Вписване" + }, + "submit": { + "message": "Подаване" + }, + "masterPass": { + "message": "Главна парола" + }, + "masterPassDesc": { + "message": "Главната парола се използва за достъп до трезора ви. Запомнете я добре, защото възстановяването ѝ е абсолютно невъзможно." + }, + "masterPassHintDesc": { + "message": "Ако сте забравили главната парола, то подсказването може да ви помогне да си я припомните." + }, + "reTypeMasterPass": { + "message": "Повторно въвеждане на главната парола" + }, + "masterPassHint": { + "message": "Подсказване за главната парола (по избор)" + }, + "settings": { + "message": "Настройки" + }, + "passwordHint": { + "message": "Подсказка за паролата" + }, + "enterEmailToGetHint": { + "message": "Въведете адреса на е-пощата си, за да получите подсказка за главната парола." + }, + "getMasterPasswordHint": { + "message": "Получете подсказване за главната парола" + }, + "emailRequired": { + "message": "Електронната поща е задължителна." + }, + "invalidEmail": { + "message": "Грешен адрес на е-поща." + }, + "masterPassRequired": { + "message": "Главната парола е задължителна." + }, + "masterPassLength": { + "message": "Главната парола трябва да съдържа поне 8 знака." + }, + "masterPassDoesntMatch": { + "message": "Главната парола и потвърждението ѝ не съвпадат." + }, + "newAccountCreated": { + "message": "Абонаментът ви бе създаден. Вече можете да се впишете." + }, + "masterPassSent": { + "message": "Изпратили сме ви е-писмо с подсказка за главната ви парола." + }, + "unexpectedError": { + "message": "Неочаквана грешка." + }, + "itemInformation": { + "message": "Сведения за елемента" + }, + "noItemsInList": { + "message": "Няма елементи за показване." + }, + "sendVerificationCode": { + "message": "Изпращане на код за потвърждаване до Вашата ел. поща" + }, + "sendCode": { + "message": "Изпращане на кода" + }, + "codeSent": { + "message": "Кодът е изпратен" + }, + "verificationCode": { + "message": "Код за потвърждаване" + }, + "confirmIdentity": { + "message": "Потвърдете самоличността си, за да продължите." + }, + "verificationCodeRequired": { + "message": "Кодът за потвърждение е задължителен." + }, + "invalidVerificationCode": { + "message": "Грешен код за потвърждаване" + }, + "continue": { + "message": "Продължаване" + }, + "enterVerificationCodeApp": { + "message": "Въведете шестцифрения код за потвърждение от приложението за удостоверяване." + }, + "enterVerificationCodeEmail": { + "message": "Въведете шестцифрения код за потвърждение, който е бил изпратен на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Писмото за потвърждение е изпратено на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Запомняне" + }, + "sendVerificationCodeEmailAgain": { + "message": "Повторно изпращане на писмото за потвърждение" + }, + "useAnotherTwoStepMethod": { + "message": "Използвайте друг начин на двустепенно удостоверяване" + }, + "insertYubiKey": { + "message": "Поставете устройството на YubiKey в USB порт на компютъра и натиснете бутона на устройството." + }, + "insertU2f": { + "message": "Поставете устройството за удостоверяване в USB порт на компютъра. Ако на устройството има бутон, натиснете го." + }, + "recoveryCodeDesc": { + "message": "Ако сте загубили достъп до двустепенното удостоверяване, може да използвате код за възстановяване, за да изключите двустепенното удостоверяване в абонамента си." + }, + "recoveryCodeTitle": { + "message": "Код за възстановяване" + }, + "authenticatorAppTitle": { + "message": "Приложение за удостоверяване" + }, + "authenticatorAppDesc": { + "message": "Използвайте приложение за удостоверяване (като Authy или Google Authenticator) за генерирането на временни кодове за потвърждение.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Устройство YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Използвайте устройство на YubiKey, за да влезете в абонамента си. Поддържат се моделите YubiKey 4, 4 Nano, 4C и NEO." + }, + "duoDesc": { + "message": "Удостоверяване чрез Duo Security, с ползване на приложението Duo Mobile, SMS, телефонен разговор или устройство U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Удостоверяване чрез Duo Security за организацията ви, с ползване на приложението Duo Mobile, SMS, телефонен разговор или устройство U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Използвайте всяко устройство, поддържащо WebAuthn, за да влезете в абонамента си." + }, + "emailTitle": { + "message": "Електронна поща" + }, + "emailDesc": { + "message": "Кодовете за потвърждение ще ви бъдат пратени по е-поща." + }, + "loginUnavailable": { + "message": "Записът липсва" + }, + "noTwoStepProviders": { + "message": "Регистрацията е защитена с двустепенно удостоверяване, но никой от настроените доставчици на удостоверяване не се поддържа от тази система." + }, + "noTwoStepProviders2": { + "message": "Пробвайте с други доставчици на удостоверяване, които се поддържат от повече системи (като специални програми за удостоверяване)." + }, + "twoStepOptions": { + "message": "Настройки на двустепенното удостоверяване" + }, + "selfHostedEnvironment": { + "message": "Собствена среда" + }, + "selfHostedEnvironmentFooter": { + "message": "Укажете базовия адрес за собствената ви инсталирана среда на Bitwarden." + }, + "customEnvironment": { + "message": "Специална среда" + }, + "customEnvironmentFooter": { + "message": "За специални случаи. Може да укажете основните адреси на всяка ползвана услуга поотделно." + }, + "baseUrl": { + "message": "Адрес на сървъра" + }, + "apiUrl": { + "message": "Адрес на ППИ-сървъра" + }, + "webVaultUrl": { + "message": "Адрес на сървъра с трезора в уеб" + }, + "identityUrl": { + "message": "Адрес на сървъра със самоличности" + }, + "notificationsUrl": { + "message": "Адрес на сървъра за уведомления" + }, + "iconsUrl": { + "message": "Адрес на сървъра с иконки" + }, + "environmentSaved": { + "message": "Средата с адресите е запазена." + }, + "ok": { + "message": "Добре" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Не" + }, + "overwritePassword": { + "message": "Обновяване на паролата" + }, + "learnMore": { + "message": "Научете повече" + }, + "featureUnavailable": { + "message": "Функцията е недостъпна" + }, + "loggedOut": { + "message": "Бяхте отписани" + }, + "loginExpired": { + "message": "Сесията ви изтече." + }, + "logOutConfirmation": { + "message": "Сигурни ли сте, че искате да се отпишете?" + }, + "logOut": { + "message": "Отписване" + }, + "addNewLogin": { + "message": "Добавяне на нов запис" + }, + "addNewItem": { + "message": "Добавяне на нов елемент" + }, + "addNewFolder": { + "message": "Добавяне на нова папка" + }, + "view": { + "message": "Преглед" + }, + "account": { + "message": "Регистрация" + }, + "loading": { + "message": "Зареждане…" + }, + "lockVault": { + "message": "Заключване на трезора" + }, + "passwordGenerator": { + "message": "Създаване на пароли" + }, + "contactUs": { + "message": "Свържете се с нас" + }, + "getHelp": { + "message": "Помощ" + }, + "fileBugReport": { + "message": "Съобщаване за грешка" + }, + "blog": { + "message": "Блог" + }, + "followUs": { + "message": "Следвайте ни" + }, + "syncVault": { + "message": "Синхронизиране" + }, + "changeMasterPass": { + "message": "Промяна на главната парола" + }, + "changeMasterPasswordConfirmation": { + "message": "Главната парола на трезор може да се промени чрез сайта bitwarden.com. Искате ли да го посетите?" + }, + "fingerprintPhrase": { + "message": "Уникална фраза", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Уникална фраза, идентифицираща абонамента ви", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Към трезора по уеб" + }, + "getMobileApp": { + "message": "Изтегляне на мобилно приложение" + }, + "getBrowserExtension": { + "message": "Изтегляне на разширение за браузъра" + }, + "syncingComplete": { + "message": "Синхронизацията завърши" + }, + "syncingFailed": { + "message": "Неуспешна синхронизация" + }, + "yourVaultIsLocked": { + "message": "Трезорът е заключен — въведете главната си парола, за да продължите." + }, + "unlock": { + "message": "Отключване" + }, + "loggedInAsOn": { + "message": "Влезли сте като $EMAIL$ в $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Грешна главна парола" + }, + "twoStepLoginConfirmation": { + "message": "Двустепенното вписване защищава регистрацията ви като ви кара да потвърдите влизането си чрез устройство-ключ, приложение за идентификация, мобилно съобщение, телефонно обаждане или е-поща. Двустепенното вписване може да се включи чрез сайта bitwarden.com. Искате ли да го посетите?" + }, + "twoStepLogin": { + "message": "Двустепенно удостоверяване" + }, + "vaultTimeout": { + "message": "Време за достъп" + }, + "vaultTimeoutDesc": { + "message": "Изберете колко да е времето за достъп и какво ще е действието след това." + }, + "immediately": { + "message": "Незабавно" + }, + "tenSeconds": { + "message": "10 сек." + }, + "twentySeconds": { + "message": "20 сек." + }, + "thirtySeconds": { + "message": "30 сек." + }, + "oneMinute": { + "message": "1 мин." + }, + "twoMinutes": { + "message": "2 мин." + }, + "fiveMinutes": { + "message": "5 мин." + }, + "fifteenMinutes": { + "message": "15 мин." + }, + "thirtyMinutes": { + "message": "30 мин." + }, + "oneHour": { + "message": "1 час" + }, + "fourHours": { + "message": "4 ча̀са" + }, + "onIdle": { + "message": "При бездействие на системата" + }, + "onSleep": { + "message": "При заспиване на системата" + }, + "onLocked": { + "message": "При заключване на системата" + }, + "onRestart": { + "message": "При повторно пускане на системата" + }, + "never": { + "message": "Никога" + }, + "security": { + "message": "Сигурност" + }, + "clearClipboard": { + "message": "Изчистване на буфера", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Автоматично изчистване на буфера след поставяне на стойността.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Без иконки на сайтовете" + }, + "disableFaviconDesc": { + "message": "Иконките на сайтовете са разпознаваемо изображение за всеки запис в трезора." + }, + "enableMinToTray": { + "message": "Смаляване в областта за уведомяване" + }, + "enableMinToTrayDesc": { + "message": "При смаляване на прозореца да се показва иконка в областта за уведомяване." + }, + "enableMinToMenuBar": { + "message": "Минимизиране в лентата за меню" + }, + "enableMinToMenuBarDesc": { + "message": "При минимизиране на прозореца да се показва иконка в лентата за меню." + }, + "enableCloseToTray": { + "message": "Затваряне в областта за уведомяване" + }, + "enableCloseToTrayDesc": { + "message": "При затваряне на прозореца да се показва иконка в областта за уведомяване." + }, + "enableCloseToMenuBar": { + "message": "Затваряне в лентата за меню" + }, + "enableCloseToMenuBarDesc": { + "message": "При затваряне на прозореца да се показва иконка в лентата за меню." + }, + "enableTray": { + "message": "Включване на иконката в областта за уведомяване" + }, + "enableTrayDesc": { + "message": "Постоянно показване на иконка в областта за уведомяване." + }, + "startToTray": { + "message": "Пускане с иконка в областта за уведомяване" + }, + "startToTrayDesc": { + "message": "При пускането на програмата да се показва само иконка в областта за уведомяване." + }, + "startToMenuBar": { + "message": "Стартиране в лентата за меню" + }, + "startToMenuBarDesc": { + "message": "При пускането на програмата да се показва само иконка в лентата за меню." + }, + "openAtLogin": { + "message": "Автоматично стартиране със системата" + }, + "openAtLoginDesc": { + "message": "Автоматично стартиране на самостоятелното приложение на Битуорден при вписване в системата." + }, + "alwaysShowDock": { + "message": "Винаги да се показва в дока" + }, + "alwaysShowDockDesc": { + "message": "Показване на иконата на Битуорден в дока, дори когато е минимизиран в лентата за меню." + }, + "confirmTrayTitle": { + "message": "Потвърждаване на изключване на областта за уведомяванията" + }, + "confirmTrayDesc": { + "message": "Изключването на настройката изключва всички други настройки за областта за уведомяванията." + }, + "language": { + "message": "Език" + }, + "languageDesc": { + "message": "Смяна на езика на интерфейса. Ще трябва да пуснете програмата повторно." + }, + "theme": { + "message": "Облик" + }, + "themeDesc": { + "message": "Промяна на цветовия облик на програмата." + }, + "dark": { + "message": "Тъмен", + "description": "Dark color" + }, + "light": { + "message": "Светъл", + "description": "Light color" + }, + "copy": { + "message": "Копиране", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Проверка за обновления" + }, + "version": { + "message": "Версия: $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Повторно пускане за обновяване" + }, + "restartToUpdateDesc": { + "message": "Версия: $VERSION_NUM$ вече може да се инсталира. За да завършите инсталацията, ще трябва да пуснете Bitwarden наново. Искате ли това да се извърши автоматично сега?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Има налично обновление" + }, + "updateAvailableDesc": { + "message": "Има налично обновление. Искате ли да се изтегли?" + }, + "restart": { + "message": "Повторно пускане" + }, + "later": { + "message": "По-късно" + }, + "noUpdatesAvailable": { + "message": "Няма обновления — ползвате последната версия!" + }, + "updateError": { + "message": "Грешка при обновяване" + }, + "unknown": { + "message": "Неизвестно" + }, + "copyUsername": { + "message": "Копиране на потребителското име" + }, + "copyNumber": { + "message": "Копиране на но̀мера", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Копиране на кода за сигурност", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Платен абонамент" + }, + "premiumManage": { + "message": "Управление на абонамента" + }, + "premiumManageAlert": { + "message": "Можете да управлявате своя абонамент през уеб сайта bitwarden.com. Искате ли да се отвори?" + }, + "premiumRefresh": { + "message": "Опресняване на абонамента" + }, + "premiumNotCurrentMember": { + "message": "В момента ползвате безплатен абонамент." + }, + "premiumSignUpAndGet": { + "message": "Платеният абонамент дава следните предимства:" + }, + "premiumSignUpStorage": { + "message": "1 ГБ пространство за файлове, които се шифроват." + }, + "premiumSignUpTwoStep": { + "message": "Двустепенно удостоверяване чрез YubiKey, FIDO U2F и Duo." + }, + "premiumSignUpReports": { + "message": "Проверки в списъците с публикувани пароли, проверка на регистрациите и доклади за пробивите в сигурността, което спомага трезорът ви да е допълнително защитен." + }, + "premiumSignUpTotp": { + "message": "Генериране на временни, еднократни кодове за двустепенно удостоверяване за регистрациите в трезора." + }, + "premiumSignUpSupport": { + "message": "Приоритетна поддръжка." + }, + "premiumSignUpFuture": { + "message": "Всички бъдещи ползи! Предстои въвеждането на още!" + }, + "premiumPurchase": { + "message": "Покупка на платен абонамент" + }, + "premiumPurchaseAlert": { + "message": "Може да платите абонамента си през сайта bitwarden.com. Искате ли да го посетите сега?" + }, + "premiumCurrentMember": { + "message": "Честито, ползвате платен абонамент!" + }, + "premiumCurrentMemberThanks": { + "message": "Благодарим ви за подкрепата на Bitwarden." + }, + "premiumPrice": { + "message": "И това само за $PRICE$ на година!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Абонаментът е опреснен" + }, + "passwordHistory": { + "message": "Хронология на паролата" + }, + "clear": { + "message": "Изчистване", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Няма пароли за показване." + }, + "undo": { + "message": "Отмяна" + }, + "redo": { + "message": "Връщане" + }, + "cut": { + "message": "Изрязване", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Поставяне", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Избиране на всичко" + }, + "zoomIn": { + "message": "Увеличаване" + }, + "zoomOut": { + "message": "Смаляване" + }, + "resetZoom": { + "message": "Стандартен мащаб" + }, + "toggleFullScreen": { + "message": "Превключване на цял екран" + }, + "reload": { + "message": "Презареждане" + }, + "toggleDevTools": { + "message": "Превключване на инструментите за разработчици" + }, + "minimize": { + "message": "Смаляване", + "description": "Minimize window" + }, + "zoom": { + "message": "Мащаб" + }, + "bringAllToFront": { + "message": "Всичко на преден план", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Относно" + }, + "services": { + "message": "Услуги" + }, + "hideBitwarden": { + "message": "Скриване на Bitwarden" + }, + "hideOthers": { + "message": "Скриване на другите" + }, + "showAll": { + "message": "Показване на всички" + }, + "quitBitwarden": { + "message": "Изход" + }, + "valueCopied": { + "message": "$VALUE$ — копирано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Помощ" + }, + "window": { + "message": "Прозорец" + }, + "checkPassword": { + "message": "Проверка дали паролата е разкрита." + }, + "passwordExposed": { + "message": "Паролата е била разкрита поне $VALUE$ път/и в пробиви. Непременно я сменете.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Паролата не е била разкрита в известните пробиви. Засега ползването ѝ изглежда безопасно." + }, + "baseDomain": { + "message": "Основен домейн", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Име на домейн", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Сървър", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Точно" + }, + "startsWith": { + "message": "Започва с" + }, + "regEx": { + "message": "Регулярен израз", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Откриване на съвпадения", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Стандартно откриване на съвпадения", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Настройки на превключване" + }, + "organization": { + "message": "Организация", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Стандартно" + }, + "exit": { + "message": "Изход" + }, + "showHide": { + "message": "Показване / Скриване", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Скриване в областта за уведомяване" + }, + "alwaysOnTop": { + "message": "Винаги отгоре", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Обновено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Обновена парола", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Изнасяне на трезора" + }, + "fileFormat": { + "message": "Формат на файла" + }, + "warning": { + "message": "ВНИМАНИЕ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Потвърждаване на изнасянето на трезора" + }, + "exportWarningDesc": { + "message": "Данните от трезора ви ще се изнесат в незащитен формат. Не го пращайте по незащитени канали като е-поща. Изтрийте файла незабавно след като свършите работата си с него." + }, + "encExportKeyWarningDesc": { + "message": "При изнасяне данните се шифрират с ключа ви. Ако го смените, ще трябва наново да ги изнесете, защото няма да може да дешифрирате настоящия файл." + }, + "encExportAccountWarningDesc": { + "message": "Ключовете за шифриране са уникални за всеки потребител, затова не може да внесете шифрирани данни от един потребител в регистрацията на друг." + }, + "noOrganizationsList": { + "message": "Не сте член на никоя организация. Организациите позволяват да споделяте записи с други потребители по защитен начин." + }, + "noCollectionsInList": { + "message": "Няма колекции за показване." + }, + "ownership": { + "message": "Собственост" + }, + "whoOwnsThisItem": { + "message": "Кой притежава този запис?" + }, + "strong": { + "message": "Силна", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Добра", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Слаба", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слаба главна парола" + }, + "weakMasterPasswordDesc": { + "message": "Зададената главна парола е твърде слаба. Главната парола трябва да е силна. Добре е да ползвате цяла фраза за парола, за да защитите данните в трезора в Bitwarden. Уверени ли сте, че искате да ползвате слаба парола?" + }, + "pin": { + "message": "ПИН", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Отключване с ПИН" + }, + "setYourPinCode": { + "message": "Задайте ПИН за отключване на Bitwarden. Настройките за ПИН се изчистват при всяко пълно излизане от програмата." + }, + "pinRequired": { + "message": "Необходим е ПИН." + }, + "invalidPin": { + "message": "Неправилен ПИН." + }, + "unlockWithWindowsHello": { + "message": "Отключване с Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Потвърждаване за Битуорден." + }, + "unlockWithTouchId": { + "message": "Отключване с Touch ID" + }, + "touchIdConsentMessage": { + "message": "Потвърждаване за Битуорден." + }, + "noAutoPromptWindowsHello": { + "message": "Да не се изисква Windows Hello при стартиране." + }, + "noAutoPromptTouchId": { + "message": "Да не се изисква Touch ID при стартиране." + }, + "lockWithMasterPassOnRestart": { + "message": "Заключване с главната парола при повторно пускане" + }, + "preferences": { + "message": "Настройки" + }, + "enableMenuBar": { + "message": "Икона в лентата с менюта" + }, + "enableMenuBarDesc": { + "message": "Винаги да се показва икона в лентата с менюта." + }, + "hideToMenuBar": { + "message": "Скриване в лентата с менюта" + }, + "selectOneCollection": { + "message": "Изберете поне една колекция." + }, + "premiumUpdated": { + "message": "Вече ползвате платен абонамент." + }, + "restore": { + "message": "Възстановяване" + }, + "premiumManageAlertAppStore": { + "message": "Можете да управлявате абонамента си от уеб магазина „App Store“. Искате ли да го посетите сега?" + }, + "legal": { + "message": "Правни въпроси", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Общи условия" + }, + "privacyPolicy": { + "message": "Политика за поверителност" + }, + "unsavedChangesConfirmation": { + "message": "Сигурни ли сте, че искате да напуснете? Текущата ви информация няма да бъде запазена." + }, + "unsavedChangesTitle": { + "message": "Незапазени промени" + }, + "clone": { + "message": "Дублиране" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Поне една политика на организация влияе на настройките на генерирането на паролите." + }, + "vaultTimeoutAction": { + "message": "Действие при изтичане на времето" + }, + "vaultTimeoutActionLockDesc": { + "message": "При заключване на трезора ще ви се наложи отново да въведете паролата си, за да го достъпите." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "При изход от трезора ще ви се наложи отново да се идентифицирате, за да го достъпите." + }, + "lock": { + "message": "Заключване", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Кошче", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Търсене в кошчето" + }, + "permanentlyDeleteItem": { + "message": "Окончателно изтриване на запис" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете записа окончателно?" + }, + "permanentlyDeletedItem": { + "message": "Записът е изтрит окончателно" + }, + "restoreItem": { + "message": "Възстановяване на запис" + }, + "restoreItemConfirmation": { + "message": "Сигурни ли сте, че искате да възстановите записа?" + }, + "restoredItem": { + "message": "Записът е възстановен" + }, + "permanentlyDelete": { + "message": "Окончателно изтриване" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Излизането от трезора изцяло спира достъпа до него след изтичане на времето. Ще ви се наложи отново да се идентифицирате, за да го достъпите. Сигурни ли сте, че искате това действие?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Потвърждаване на действието" + }, + "enterpriseSingleSignOn": { + "message": "Еднократна идентификация (SSO)" + }, + "setMasterPassword": { + "message": "Задаване на главна парола" + }, + "ssoCompleteRegistration": { + "message": "За да завършите настройките за еднократна идентификация, трябва да зададете главна парола за трезора." + }, + "newMasterPass": { + "message": "Нова главна парола" + }, + "confirmNewMasterPass": { + "message": "Потвърждаване на новата главна парола" + }, + "masterPasswordPolicyInEffect": { + "message": "Поне една политика на организация има следните изисквания към главната ви парола:" + }, + "policyInEffectMinComplexity": { + "message": "Минимална сложност от $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Минимална дължина: $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Поне една главна буква" + }, + "policyInEffectLowercase": { + "message": "Поне една малка буква" + }, + "policyInEffectNumbers": { + "message": "Поне една цифра" + }, + "policyInEffectSpecial": { + "message": "Поне един от следните специални знаци: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Паролата ви не отговаря на политиките." + }, + "acceptPolicies": { + "message": "Чрез тази отметка вие се съгласявате със следното:" + }, + "acceptPoliciesError": { + "message": "Условията за използване и политиката за поверителност не бяха приети." + }, + "enableBrowserIntegration": { + "message": "Включване на интеграцията с браузър" + }, + "enableBrowserIntegrationDesc": { + "message": "За потвърждаване с биометрични данни е необходима интеграция с браузъра." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Интеграцията с браузър не се поддържа" + }, + "browserIntegrationMasOnlyDesc": { + "message": "За жалост в момента интеграцията с браузър не се поддържа във версията за магазина на Mac." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Интеграцията с браузър не се поддържа" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "За жалост в момента интеграцията с браузър не се поддържа във версията за магазина на Windows." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Потвърждаване на интеграцията с браузър" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Допълнително ниво на сигурност, чрез изискване на потвърждаване на биометричните данни при създаване на връзка между самостоятелното приложение и браузъра. При включваното му потребителят трябва да потвърждава всяко установяване на връзка." + }, + "approve": { + "message": "Одобряване" + }, + "verifyBrowserTitle": { + "message": "Проверка на връзката с браузъра" + }, + "verifyBrowserDesc": { + "message": "Уверете се, че идентификаторът в разширението съвпада с показания." + }, + "biometricsNotEnabledTitle": { + "message": "Потвърждаването с биометрични данни не е включено" + }, + "biometricsNotEnabledDesc": { + "message": "Потвърждаването с биометрични данни в браузъра изисква включването включването им в настройките за самостоятелното приложение." + }, + "personalOwnershipSubmitError": { + "message": "Заради някоя политика за голяма организация не може да запазвате елементи в собствения си трезор. Променете собствеността да е на организация и изберете от наличните колекции." + }, + "hintEqualsPassword": { + "message": "Подсказването за паролата не може да съвпада с нея." + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика от някоя организация влияе на вариантите за собственост." + }, + "allSends": { + "message": "Всички изпращания", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Текст" + }, + "searchSends": { + "message": "Търсене в изпратените", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Редактиране на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Моят трезор" + }, + "text": { + "message": "Текст" + }, + "deletionDate": { + "message": "Дата на изтриване" + }, + "deletionDateDesc": { + "message": "Изпращането ще бъде окончателно изтрито на зададената дата и време.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Срок на валидност" + }, + "expirationDateDesc": { + "message": "При задаване — това изпращане ще се изключи на зададената дата и време.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Максимален брой достъпвания" + }, + "maxAccessCountDesc": { + "message": "При задаване — това изпращане ще се изключи след определен брой достъпвания.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Текущ брой на достъпванията" + }, + "disableSend": { + "message": "Пълно спиране на това изпращане — никой няма да има достъп.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Изискване на парола за достъп до това изпращане.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Скрити бележки за това изпращане.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Изпращане на връзката", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Изпращане на връзката", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "При достъп до изпращането стандартно текстът да се скрива", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Създадено изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Редактиране на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Изтрито изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Нова парола" + }, + "whatTypeOfSend": { + "message": "Вид на изпратеното", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Създаване на изпращане", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст за изпращане." + }, + "sendFileDesc": { + "message": "Файл за изпращане." + }, + "days": { + "message": "$DAYS$ ден/дни", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 ден" + }, + "custom": { + "message": "По избор" + }, + "deleteSendConfirmation": { + "message": "Сигурни ли сте, че искате да изтриете това изпращане?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Копиране на връзката към изпращането", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Копиране на връзката към изпращането при запазването му за лесно споделяне." + }, + "sendDisabled": { + "message": "Изпращането е изключено", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Поради политика на организация, може само да изтривате съществуващи изпращания.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Копиране на връзката" + }, + "disabled": { + "message": "Изключено" + }, + "maxAccessCountReached": { + "message": "Достигнат е максималният брой достъпвания" + }, + "expired": { + "message": "Изтекъл" + }, + "pendingDeletion": { + "message": "Предстои изтриване" + }, + "webAuthnAuthenticate": { + "message": "Идентификация WebAuthn" + }, + "hideEmail": { + "message": "Скриване на е-пощата ми от получателите." + }, + "sendOptionsPolicyInEffect": { + "message": "Поне една политика на организация влияе на настройките за изпращане." + }, + "emailVerificationRequired": { + "message": "Изисква се потвърждение на е-пощата" + }, + "emailVerificationRequiredDesc": { + "message": "Трябва да потвърдите е-пощата си, за да можете да използвате тази функционалност." + }, + "passwordPrompt": { + "message": "Повторно запитване за главната парола" + }, + "passwordConfirmation": { + "message": "Потвърждение на главната парола" + }, + "passwordConfirmationDesc": { + "message": "Това действие е защитено. За да продължите, въведете отново главната си парола, за да потвърдите самоличността си." + }, + "updatedMasterPassword": { + "message": "Главната парола е променена" + }, + "updateMasterPassword": { + "message": "Промяна на главната парола" + }, + "updateMasterPasswordWarning": { + "message": "Вашата главна парола наскоро е била сменена от администратор в организацията Ви. За да получите достъп до трезора, трябва първо да я промените. Това означава, че ще бъдете отписан(а) от текущата си сесия и ще трябва да се впишете отново. Активните сесии на други устройства може да продължат да бъдат активни още един час." + }, + "hours": { + "message": "Часа" + }, + "minutes": { + "message": "Минути" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Настройките на организацията Ви влияят върху времето за достъп до трезора Ви. Максималното разрешено време за достъп е $HOURS$ час(а) и $MINUTES$ минути", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Времето за достъп до трезора Ви превишава ограничението, определено от организацията Ви." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматично включване" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Тази организация включва автоматично новите си потребители в смяната на пароли. Това означава, че администраторите на организацията ще могат да променят главната Ви парола." + }, + "vaultExportDisabled": { + "message": "Изнасянето на трезора е изключено" + }, + "personalVaultExportPolicyInEffect": { + "message": "Една или повече от настройките на организацията Ви не позволяват да изнасяте личния си трезор." + }, + "addAccount": { + "message": "Добавяне на регистрация" + }, + "removeMasterPassword": { + "message": "Премахване на главната парола" + }, + "removedMasterPassword": { + "message": "Главната парола е премахната." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ използва еднократно удостоверяване със собствен сървър за ключове. Членовете на тази организация вече нямат нужда от главна парола за вписване.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Напускане на организацията" + }, + "leaveOrganizationConfirmation": { + "message": "Наистина ли искате да напуснете тази организация?" + }, + "leftOrganization": { + "message": "Напуснахте организацията." + }, + "ssoKeyConnectorUnavailable": { + "message": "Конекторът за ключове е недостъпен. Опитайте отново по-късно." + }, + "lockAllVaults": { + "message": "Заключване на всички трезори" + }, + "accountLimitReached": { + "message": "Не може едновременно да са вписани повече от 5 регистрации." + }, + "accountPreferences": { + "message": "Настройки" + }, + "appPreferences": { + "message": "Настройки на приложението (за всички регистрирани)" + }, + "accountSwitcherLimitReached": { + "message": "Достигнато е ограничението на броя регистрации. Излезте от някоя, за да добавите друга." + }, + "settingsTitle": { + "message": "Настройки на приложението за $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Превключване на потребителя" + }, + "options": { + "message": "Настройки" + }, + "sessionTimeout": { + "message": "Сесията Ви изтече. Моля, върнете се назад и се опитайте да влезете отново." + }, + "exportingPersonalVaultTitle": { + "message": "Изнасяне на личния трезор" + }, + "exportingPersonalVaultDescription": { + "message": "Ще бъдат изнесени само записите от личния трезор свързан с $EMAIL$. Записите в трезора на организацията няма да бъдат включени.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Какво бихте искали да генерирате?" + }, + "passwordType": { + "message": "Тип парола" + }, + "regenerateUsername": { + "message": "Повторно генериране на потр. име" + }, + "generateUsername": { + "message": "Генериране на потр. име" + }, + "usernameType": { + "message": "Тип потребителско име" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Използвайте възможностите за под-адресиране на е-поща на своя доставчик." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Произволно" + }, + "randomWord": { + "message": "Произволна дума" + }, + "websiteName": { + "message": "Име на уеб сайт" + }, + "service": { + "message": "Услуга" + } +} diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json new file mode 100644 index 0000000000..4b6395ce3f --- /dev/null +++ b/apps/desktop/src/locales/bn/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "ফিল্টার" + }, + "allItems": { + "message": "সকল বস্তু" + }, + "favorites": { + "message": "প্রিয়গুলো" + }, + "types": { + "message": "প্রকার" + }, + "typeLogin": { + "message": "লগইন" + }, + "typeCard": { + "message": "কার্ড" + }, + "typeIdentity": { + "message": "পরিচয়" + }, + "typeSecureNote": { + "message": "সুরক্ষিত নোট" + }, + "folders": { + "message": "ফোল্ডারসমূহ" + }, + "collections": { + "message": "সংগ্রহ" + }, + "searchVault": { + "message": "ভল্ট খুঁজুন" + }, + "addItem": { + "message": "বস্তু জুড়ুন" + }, + "shared": { + "message": "ভাগকৃত" + }, + "share": { + "message": "ভাগ করুন" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "সংযুক্তি" + }, + "viewItem": { + "message": "বস্তু দেখুন" + }, + "name": { + "message": "নাম" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "নতুন URI" + }, + "username": { + "message": "ব্যবহারকারীর নাম" + }, + "password": { + "message": "পাসওয়ার্ড" + }, + "passphrase": { + "message": "পাসফ্রেজ" + }, + "editItem": { + "message": "বস্তু সম্পাদনা" + }, + "emailAddress": { + "message": "ইমেইল ঠিকানা" + }, + "verificationCodeTotp": { + "message": "যাচাইকরণ কোড (TOTP)" + }, + "website": { + "message": "ওয়েবসাইট" + }, + "notes": { + "message": "মন্তব্য" + }, + "customFields": { + "message": "পছন্দসই ক্ষেত্র" + }, + "launch": { + "message": "শুরু" + }, + "copyValue": { + "message": "মান অনুলিপিত করুন", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "দৃশ্যমানতা টগল করুন" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "কার্ডধারীর নাম" + }, + "number": { + "message": "নম্বর" + }, + "brand": { + "message": "ব্র্যান্ড" + }, + "expiration": { + "message": "মেয়াদোত্তীর্ণতা" + }, + "securityCode": { + "message": "নিরাপত্তা কোড" + }, + "identityName": { + "message": "পরিচয়ের নাম" + }, + "company": { + "message": "প্রতিষ্ঠান" + }, + "ssn": { + "message": "সামাজিক সুরক্ষা নম্বর" + }, + "passportNumber": { + "message": "পাসপোর্ট নম্বর" + }, + "licenseNumber": { + "message": "লাইসেন্স নম্বর" + }, + "email": { + "message": "ইমেইল" + }, + "phone": { + "message": "ফোন" + }, + "address": { + "message": "ঠিকানা" + }, + "premiumRequired": { + "message": "প্রিমিয়াম আবশ্যক" + }, + "premiumRequiredDesc": { + "message": "এই বৈশিষ্ট্যটি ব্যবহার করতে একটি প্রিমিয়াম সদস্যতার প্রয়োজন।" + }, + "errorOccurred": { + "message": "একটি ত্রুটি উৎপন্ন হয়েছে।" + }, + "error": { + "message": "ত্রুটি" + }, + "january": { + "message": "জানুয়ারী" + }, + "february": { + "message": "ফেব্রুয়ারী" + }, + "march": { + "message": "মার্চ" + }, + "april": { + "message": "এপ্রিল" + }, + "may": { + "message": "মে" + }, + "june": { + "message": "জুন" + }, + "july": { + "message": "জুলাই" + }, + "august": { + "message": "আগস্ট" + }, + "september": { + "message": "সেপ্টেম্বর" + }, + "october": { + "message": "অক্টোবর" + }, + "november": { + "message": "নভেম্বর" + }, + "december": { + "message": "ডিসেম্বর" + }, + "ex": { + "message": "উদাহরণ", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "শিরোনাম" + }, + "mr": { + "message": "জনাব" + }, + "mrs": { + "message": "জনাবা" + }, + "ms": { + "message": "জনাবা" + }, + "dr": { + "message": "ডাঃ" + }, + "expirationMonth": { + "message": "মেয়াদোত্তীর্ণ মাস" + }, + "expirationYear": { + "message": "মেয়াদোত্তীর্ণ বছর" + }, + "select": { + "message": "নির্বাচন করুন" + }, + "other": { + "message": "অন্যান্য" + }, + "generatePassword": { + "message": "পাসওয়ার্ড তৈরি করুন" + }, + "type": { + "message": "ধরন" + }, + "firstName": { + "message": "নামের প্রথমাংশ" + }, + "middleName": { + "message": "নামের মধ্যাংশ" + }, + "lastName": { + "message": "নামের শেষাংশ" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "ঠিকানা ১" + }, + "address2": { + "message": "ঠিকানা ২" + }, + "address3": { + "message": "ঠিকানা ৩" + }, + "cityTown": { + "message": "শহর" + }, + "stateProvince": { + "message": "রাজ্য / প্রদেশ" + }, + "zipPostalCode": { + "message": "জিপ / ডাক কোড" + }, + "country": { + "message": "দেশ" + }, + "save": { + "message": "সংরক্ষণ" + }, + "cancel": { + "message": "বাতিল" + }, + "delete": { + "message": "মুছুন" + }, + "favorite": { + "message": "প্রিয়" + }, + "edit": { + "message": "সম্পাদনা" + }, + "authenticatorKeyTotp": { + "message": "প্রমাণীকরণকারী কী (TOTP)" + }, + "folder": { + "message": "ফোল্ডার" + }, + "newCustomField": { + "message": "নতুন পছন্দসই ক্ষেত্র" + }, + "value": { + "message": "মান" + }, + "dragToSort": { + "message": "বাছাই করতে টানুন" + }, + "cfTypeText": { + "message": "পাঠ্য" + }, + "cfTypeHidden": { + "message": "লুকায়িত" + }, + "cfTypeBoolean": { + "message": "বুলিয়ান" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "সরান" + }, + "nameRequired": { + "message": "নাম প্রয়োজন।" + }, + "addedItem": { + "message": "বস্তু যোগ করা হয়েছে" + }, + "editedItem": { + "message": "সম্পাদিত বস্তু" + }, + "deleteItem": { + "message": "বস্তু মুছুন" + }, + "deleteFolder": { + "message": "ফোল্ডার মুছুন" + }, + "deleteAttachment": { + "message": "সংযুক্তি মুছুন" + }, + "deleteItemConfirmation": { + "message": "আপনি কি সত্যিই আবর্জনাতে পাঠাতে চান?" + }, + "deletedItem": { + "message": "বস্তুতটি আবর্জনাতে পাঠানো হয়েছে" + }, + "overwritePasswordConfirmation": { + "message": "আপনি কি নিশ্চিত যে আপনি বর্তমান পাসওয়ার্ডটি ওভাররাইট করতে চান?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "কোন ফোল্ডার নেই", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "ফোল্ডার জুড়ুন" + }, + "editFolder": { + "message": "ফোল্ডার সম্পাদনা" + }, + "regeneratePassword": { + "message": "পাসওয়ার্ড পুনঃতৈরি করুন" + }, + "copyPassword": { + "message": "পাসওয়ার্ড অনুলিপিত করুন" + }, + "copyUri": { + "message": "URI অনুলিপিত করুন" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "দৈর্ঘ্য" + }, + "numWords": { + "message": "শব্দের সংখ্যা" + }, + "wordSeparator": { + "message": "শব্দ বিভাজক" + }, + "capitalize": { + "message": "বড় হাতের করুন", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "নম্বর অন্তর্ভুক্ত করুন" + }, + "close": { + "message": "বন্ধ করুন" + }, + "minNumbers": { + "message": "সর্বনিম্ন সংখ্যা" + }, + "minSpecial": { + "message": "ন্যূনতম বিশেষ", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "অস্পষ্ট বর্ণগুলি এড়িয়ে চলুন" + }, + "searchCollection": { + "message": "সংগ্রহ অনুসন্ধান" + }, + "searchFolder": { + "message": "ফোল্ডার অনুসন্ধান" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "অনুসন্ধানের ধরন", + "description": "Search item type" + }, + "newAttachment": { + "message": "নতুন সংযুক্তি জুড়ুন" + }, + "deletedAttachment": { + "message": "সংযুক্তি মোছা হয়েছে" + }, + "deleteAttachmentConfirmation": { + "message": "আপনি কি এই সংযুক্তিটি মোছার বিষয়ে নিশ্চিত?" + }, + "attachmentSaved": { + "message": "সংযুক্তিটি সংরক্ষণ করা হয়েছে।" + }, + "file": { + "message": "ফাইল" + }, + "selectFile": { + "message": "একটি ফাইল নির্বাচন করুন।" + }, + "maxFileSize": { + "message": "সর্বোচ্চ ফাইলের আকার ১০০ এমবি।" + }, + "updateKey": { + "message": "আপনি আপনার এনক্রিপশন কী হালনাগাদ না করা পর্যন্ত এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না।" + }, + "editedFolder": { + "message": "ফোল্ডার সম্পাদিত" + }, + "addedFolder": { + "message": "ফোল্ডার জোড়া হয়েছে" + }, + "deleteFolderConfirmation": { + "message": "আপনি কি নিশ্চিত যে এই ফোল্ডারটি মুছতে চান?" + }, + "deletedFolder": { + "message": "ফোল্ডার মোছা হয়েছে" + }, + "loginOrCreateNewAccount": { + "message": "আপনার সুরক্ষিত ভল্টে প্রবেশ করতে লগ ইন করুন অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন।" + }, + "createAccount": { + "message": "অ্যাকাউন্ট তৈরি করুন" + }, + "logIn": { + "message": "প্রবেশ করুন" + }, + "submit": { + "message": "জমা দিন" + }, + "masterPass": { + "message": "মূল পাসওয়ার্ড" + }, + "masterPassDesc": { + "message": "মূল পাসওয়ার্ড হল সেই পাসওয়ার্ডটি যা আপনি নিজের ভল্ট ব্যাবহার করতে ব্যবহার করেন। এটি খুব গুরুত্বপূর্ণ যে আপনি নিজের মূল পাসওয়ার্ডটি ভুলে যাবেন না। আপনি যদি ভুলে গিয়ে থাকেন তবে পাসওয়ার্ডটি পুনরুদ্ধার করার কোনও উপায় নেই।" + }, + "masterPassHintDesc": { + "message": "যদি আপনি আপনার পাসওয়ার্ড ভুলে যান তাহলে একটি মূল পাসওয়ার্ডের ইঙ্গিতটি আপনাকে মনে করাতে সাহায্য করতে পারে।" + }, + "reTypeMasterPass": { + "message": "পুনরায় মূল পাসওয়ার্ডটি লিখুন" + }, + "masterPassHint": { + "message": "মূল পাসওয়ার্ড ইঙ্গিত (ঐচ্ছিক)" + }, + "settings": { + "message": "সেটিংস" + }, + "passwordHint": { + "message": "পাসওয়ার্ড ইঙ্গিত" + }, + "enterEmailToGetHint": { + "message": "আপনার মূল পাসওয়ার্ডের ইঙ্গিতটি পেতে আপনার অ্যাকাউন্টের ইমেল ঠিকানা প্রবেশ করুন।" + }, + "getMasterPasswordHint": { + "message": "মূল পাসওয়ার্ডের ইঙ্গিত পান" + }, + "emailRequired": { + "message": "ইমেইল ঠিকানা প্রয়োজন।" + }, + "invalidEmail": { + "message": "অকার্যকর ইমেইল ঠিকানা।" + }, + "masterPassRequired": { + "message": "মূল পাসওয়ার্ড প্রয়োজন।" + }, + "masterPassLength": { + "message": "মূল পাসওয়ার্ড কমপক্ষে ৮ অক্ষর দীর্ঘ হওয়া উচিত।" + }, + "masterPassDoesntMatch": { + "message": "মূল পাসওয়ার্ড নিশ্চিতকরণ মেলেনি।" + }, + "newAccountCreated": { + "message": "আপনার নতুন অ্যাকাউন্ট তৈরি করা হয়েছে! আপনি এখন প্রবেশ করতে পারেন।" + }, + "masterPassSent": { + "message": "আমরা আপনাকে আপনার মূল পাসওয়ার্ডের ইঙ্গিতসহ একটি ইমেল প্রেরণ করেছি।" + }, + "unexpectedError": { + "message": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে।" + }, + "itemInformation": { + "message": "বস্তু তথ্য" + }, + "noItemsInList": { + "message": "তালিকার জন্য কোনও বস্তু নেই।" + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "যাচাইকরণ কোড" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "যাচাইকরণ কোড প্রয়োজন।" + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "অবিরত" + }, + "enterVerificationCodeApp": { + "message": "আপনার প্রমাণীকরণকারী অ্যাপ থেকে ৬ সংখ্যার যাচাইকরণ কোডটি প্রবেশ করুন।" + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ এ ইমেইল করা ৬ সংখ্যার যাচাই কোডটি প্রবেশ করুন।", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "$EMAIL$ এ যাচাইকরণ ইমেইল প্রেরণ করা হয়েছে।", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "আমাকে মনে রাখবেন" + }, + "sendVerificationCodeEmailAgain": { + "message": "আবার যাচাইকরণ কোড ইমেইলে প্রেরণ করুন" + }, + "useAnotherTwoStepMethod": { + "message": "অন্য দ্বি-পদক্ষেপ প্রবেশ পদ্ধতি ব্যবহার করুন" + }, + "insertYubiKey": { + "message": "আপনার কম্পিউটারের ইউএসবি পোর্টে আপনার YubiKey ঢোকান, তারপরে তার বোতামটি স্পর্শ করুন।" + }, + "insertU2f": { + "message": "আপনার কম্পিউটারের ইউএসবি পোর্টে আপনার সুরক্ষা কী ঢোকান। এটিতে যদি একটি বোতাম থাকে তবে তা স্পর্শ করুন।" + }, + "recoveryCodeDesc": { + "message": "আপনার সমস্ত দ্বি-গুণক সরবরাহকারীদের অ্যাক্সেস হারিয়েছেন? আপনার অ্যাকাউন্ট থেকে সমস্ত দ্বি-গুণক সরবরাহকারীদের অক্ষম করতে আপনার পুনরুদ্ধার কোডটি ব্যবহার করুন।" + }, + "recoveryCodeTitle": { + "message": "পুনরুদ্ধার কোড" + }, + "authenticatorAppTitle": { + "message": "প্রমাণীকরণকারী অ্যাপ" + }, + "authenticatorAppDesc": { + "message": "সময় ভিত্তিক যাচাইকরণ কোড উৎপন্ন করতে একটি প্রমাণীকরণকারী অ্যাপ্লিকেশন (যেমন Authy বা Google Authenticator) ব্যবহার করুন।", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP সুরক্ষা কী" + }, + "yubiKeyDesc": { + "message": "আপনার অ্যাকাউন্ট ব্যাবহার করতে একটি YubiKey ব্যবহার করুন। YubiKey 4, 4 Nano, 4C, এবং NEO ডিভাইসগুলির সাথে কাজ করে।" + }, + "duoDesc": { + "message": "Duo Mobile app, এসএমএস, ফোন কল, বা U2F সুরক্ষা কী ব্যবহার করে Duo Security এর মাধ্যমে যাচাই করুন।", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Duo Mobile app, এসএমএস, ফোন কল, বা U2F সুরক্ষা কী ব্যবহার করে আপনার সংস্থার জন্য Duo Security এর মাধ্যমে যাচাই করুন।", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "ইমেইল" + }, + "emailDesc": { + "message": "যাচাই কোডগুলি আপনাকে ই-মেইল করা হবে।" + }, + "loginUnavailable": { + "message": "লগইন অনুপলব্ধ" + }, + "noTwoStepProviders": { + "message": "এই অ্যাকাউন্টে দ্বি-পদক্ষেপ লগইন সক্ষম রয়েছে, তবে কনফিগারকৃত দ্বি-পদক্ষেপ সরবরাহকারীদের কোনওটিই এই ডিভাইস দ্বারা সমর্থিত নয়।" + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "দ্বি-পদক্ষেপ লগইন বিকল্প" + }, + "selfHostedEnvironment": { + "message": "স্ব-হোস্টকৃত পরিবেশ" + }, + "selfHostedEnvironmentFooter": { + "message": "আপনার অন-প্রাঙ্গনে হোস্টকৃত Bitwarden ইনস্টলেশনটির বেস URL উল্লেখ করুন।" + }, + "customEnvironment": { + "message": "পছন্দসই পরিবেশ" + }, + "customEnvironmentFooter": { + "message": "উন্নত ব্যবহারকারীদের জন্য। আপনি স্বতন্ত্রভাবে প্রতিটি পরিষেবার মূল URL নির্দিষ্ট করতে পারেন।" + }, + "baseUrl": { + "message": "সার্ভার URL" + }, + "apiUrl": { + "message": "এপিআই সার্ভার URL" + }, + "webVaultUrl": { + "message": "ওয়েব ভল্ট সার্ভার URL" + }, + "identityUrl": { + "message": "পরিচয় সার্ভার URL" + }, + "notificationsUrl": { + "message": "বিজ্ঞপ্তি সার্ভার URL" + }, + "iconsUrl": { + "message": "আইকন সার্ভার URL" + }, + "environmentSaved": { + "message": "পরিবেশের URL গুলি সংরক্ষণ করা হয়েছে।" + }, + "ok": { + "message": "ঠিক আছে" + }, + "yes": { + "message": "হ্যাঁ" + }, + "no": { + "message": "না" + }, + "overwritePassword": { + "message": "ওভাররাইট পাসওয়ার্ড" + }, + "learnMore": { + "message": "আরও জানুন" + }, + "featureUnavailable": { + "message": "বৈশিষ্ট্য অনুপলব্ধ" + }, + "loggedOut": { + "message": "প্রস্থানকৃত" + }, + "loginExpired": { + "message": "আপনার লগইন মাত্রকালটির মেয়াদ শেষ হয়ে গেছে।" + }, + "logOutConfirmation": { + "message": "আপনি লগ আউট করতে চান?" + }, + "logOut": { + "message": "লগ আউট" + }, + "addNewLogin": { + "message": "নতুন লগইন জুড়ুন" + }, + "addNewItem": { + "message": "নতুন বস্তু জুড়ুন" + }, + "addNewFolder": { + "message": "নতুন ফোল্ডার জুড়ুন" + }, + "view": { + "message": "দেখুন" + }, + "account": { + "message": "অ্যাকাউন্ট" + }, + "loading": { + "message": "লোড হচ্ছে..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "পাসওয়ার্ড উৎপাদক" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "ভল্ট সিঙ্ক করুন" + }, + "changeMasterPass": { + "message": "মূল পাসওয়ার্ড পরিবর্তন" + }, + "changeMasterPasswordConfirmation": { + "message": "আপনি bitwarden.com ওয়েব ভল্ট থেকে মূল পাসওয়ার্ডটি পরিবর্তন করতে পারেন। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "fingerprintPhrase": { + "message": "ফিঙ্গারপ্রিন্ট ফ্রেজ", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "আপনার অ্যাকাউন্টের ফিঙ্গারপ্রিন্ট ফ্রেজ", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "ব্রাউজার এক্সটেনশন পান" + }, + "syncingComplete": { + "message": "সিঙ্কিং সম্পন্ন" + }, + "syncingFailed": { + "message": "সিঙ্কিঙ্গে ব্যর্থ" + }, + "yourVaultIsLocked": { + "message": "আপনার ভল্ট লক করা আছে। চালিয়ে যেতে আপনার মূল পাসওয়ার্ডটি যাচাই করান।" + }, + "unlock": { + "message": "আনলক" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ এ $EMAIL$ হিসাবে লগ ইনকৃত।", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "অবৈধ মূল পাসওয়ার্ড" + }, + "twoStepLoginConfirmation": { + "message": "দ্বি-পদক্ষেপ লগইন অন্য ডিভাইসে আপনার লগইনটি যাচাই করার জন্য সিকিউরিটি কী, প্রমাণীকরণকারী অ্যাপ্লিকেশন, এসএমএস, ফোন কল বা ই-মেইল ব্যাবহারের মাধ্যমে আপনার অ্যাকাউন্টকে আরও সুরক্ষিত করে। bitwarden.com ওয়েব ভল্টে দ্বি-পদক্ষেপের লগইন সক্ষম করা যাবে। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "twoStepLogin": { + "message": "দ্বি-পদক্ষেপের লগইন" + }, + "vaultTimeout": { + "message": "ভল্টের সময়সীমা" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "সঙ্গে সঙ্গে" + }, + "tenSeconds": { + "message": "১০ সেকেন্ড" + }, + "twentySeconds": { + "message": "২০ সেকেন্ড" + }, + "thirtySeconds": { + "message": "৩০ সেকেন্ড" + }, + "oneMinute": { + "message": "১ মিনিট" + }, + "twoMinutes": { + "message": "২ মিনিট" + }, + "fiveMinutes": { + "message": "৫ মিনিট" + }, + "fifteenMinutes": { + "message": "১৫ মিনিট" + }, + "thirtyMinutes": { + "message": "৩০ মিনিট" + }, + "oneHour": { + "message": "১ ঘণ্টা" + }, + "fourHours": { + "message": "৪ ঘন্টা" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "সিস্টেম লকে" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "ক্লিপবোর্ড পরিষ্কার", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "আপনার ক্লিপবোর্ড থেকে অনুলিপিত মানগুলি স্বয়ংক্রিয়ভাবে সাফ করে।", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "ওয়েবসাইট আইকন অক্ষম করুন" + }, + "disableFaviconDesc": { + "message": "ওয়েবসাইট আইকনগুলি আপনার ভল্টের প্রতিটি লগইন বস্তুর পাশে একটি পরিচয়যোগ্য চিত্র সরবরাহ করে।" + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "ভাষা" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "অ্যাপ্লিকেশনটির রং থিম পরিবর্তন।" + }, + "dark": { + "message": "অন্ধকার", + "description": "Dark color" + }, + "light": { + "message": "উজ্জ্বল", + "description": "Light color" + }, + "copy": { + "message": "অনুলিপি", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "হালনাগাদের জন্য পরীক্ষা করুন" + }, + "version": { + "message": "সংস্করণ $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "হালনাগাদ করতে রিস্টার্ট করুন" + }, + "restartToUpdateDesc": { + "message": "সংস্করণ $VERSION_NUM$ ইন্সটল করার জন্য প্রস্তুত। ইনস্টলেশনটি শেষ করতে আপনাকে অবশ্যই অ্যাপ্লিকেশনটি পুনরায় চালু করতে হবে। আপনি কি এখনই পুনরায় চালু এবং আপডেট করতে চান?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "হালনাগাদ উপলব্ধ" + }, + "updateAvailableDesc": { + "message": "একটি হালনাগাদপাওয়া গেছে। আপনি কি এখনই এটি ডাউনলোড করতে চান?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "পরে" + }, + "noUpdatesAvailable": { + "message": "বর্তমানে কোন হালনাগাদ নেই। আপনি সর্বশেষতম সংস্করণ ব্যবহার করছেন।" + }, + "updateError": { + "message": "আপডেট ত্রুটি" + }, + "unknown": { + "message": "অজানা" + }, + "copyUsername": { + "message": "ব্যবহারকারীর নাম অনুলিপিত করুন" + }, + "copyNumber": { + "message": "নম্বর অনুলিপিত করুন", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "সুরক্ষা কোড অনুলিপিত করুন", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "প্রিমিয়াম সদস্যতা" + }, + "premiumManage": { + "message": "সদস্যতা পরিচালনা" + }, + "premiumManageAlert": { + "message": "আপনি bitwarden.com ওয়েব ভল্টে আপনার সদস্যপদ পরিচালনা করতে পারেন। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "premiumRefresh": { + "message": "সদস্যতা সতেজ করুন" + }, + "premiumNotCurrentMember": { + "message": "আপনি বর্তমানে প্রিমিয়াম সদস্য নন।" + }, + "premiumSignUpAndGet": { + "message": "প্রিমিয়াম সদস্যতার জন্য সাইন আপ করুন এবং পান:" + }, + "premiumSignUpStorage": { + "message": "ফাইল সংযুক্তির জন্য ১ জিবি এনক্রিপ্টেড স্থান।" + }, + "premiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F, ও Duo এর মতো অতিরিক্ত দ্বি-পদক্ষেপ লগইন বিকল্পগুলি।" + }, + "premiumSignUpReports": { + "message": "আপনার ভল্টটি সুরক্ষিত রাখতে পাসওয়ার্ড স্বাস্থ্যকরন, অ্যাকাউন্ট স্বাস্থ্য এবং ডেটা লঙ্ঘনের প্রতিবেদন।" + }, + "premiumSignUpTotp": { + "message": "আপনার ভল্টে লগইনগুলির জন্য TOTP যাচাইকরণ কোড (2FA) উৎপাদক।" + }, + "premiumSignUpSupport": { + "message": "অগ্রাধিকার গ্রাহক সমর্থন।" + }, + "premiumSignUpFuture": { + "message": "ভবিষ্যতের সমস্ত প্রিমিয়াম বৈশিষ্ট্য। আরও শীঘ্রই আসছে!" + }, + "premiumPurchase": { + "message": "প্রিমিয়াম কিনুন" + }, + "premiumPurchaseAlert": { + "message": "আপনি bitwarden.com ওয়েব ভল্টে প্রিমিয়াম সদস্যতা কিনতে পারেন। আপনি কি এখনই ওয়েবসাইটটি দেখতে চান?" + }, + "premiumCurrentMember": { + "message": "আপনি প্রিমিয়াম সদস্য!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden কে সমর্থন করার জন্য আপনাকে ধন্যবাদ।" + }, + "premiumPrice": { + "message": "সমস্ত মাত্র $PRICE$ / বছরের জন্য!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "পুনঃসতেজ সম্পূর্ণ" + }, + "passwordHistory": { + "message": "পাসওয়ার্ড ইতিহাস" + }, + "clear": { + "message": "পরিষ্কার", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "তালিকার জন্য কোনও পাসওয়ার্ড নেই।" + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ অনুলিপিত", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "সাহায্য" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "পাসওয়ার্ড উন্মুক্ত হয়েছে কিনা তা পরীক্ষা করুন।" + }, + "passwordExposed": { + "message": "ডেটা লঙ্ঘনে এই পাসওয়ার্ডটি $VALUE$ সময় (গুলি) উন্মুক্ত করা হয়েছে। আপনার এটি পরিবর্তন করা উচিত।", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "এই পাসওয়ার্ডটি কোনও পরিচিত তথ্য লঙ্ঘনে পাওয়া যায় নি। এটি ব্যবহার করা নিরাপদ হওয়া উচিত।" + }, + "baseDomain": { + "message": "ভিত্তি ডোমেইন", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "নিয়ন্ত্রণকর্তা", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "হুবহু" + }, + "startsWith": { + "message": "শুরু করুন" + }, + "regEx": { + "message": "নিয়মিত অভিব্যাক্তি", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "মিল সনাক্তকরণ", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "পূর্ব-নির্ধারিত মিল সনাক্তকরণ", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "বিকল্পগুলি টগল করুন" + }, + "organization": { + "message": "সংগঠন", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "পূর্ব-নির্ধারিত" + }, + "exit": { + "message": "প্রস্থান" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "হালনাগাদকৃত", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "পাসওয়ার্ড হালনাগাদকৃত", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "ভল্ট রফতানি" + }, + "fileFormat": { + "message": "ফাইলের ধরণ" + }, + "warning": { + "message": "সতর্কতা", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "ভল্ট রফতানির নিশ্চয়তা দিন" + }, + "exportWarningDesc": { + "message": "এই রফতানীতে একটি বিনা-এনক্রিপ্টেড করা বিন্যাসে আপনার ভল্ট তথ্য রয়েছে। আপনার রফতানিকৃত হওয়া ফাইল নিরাপত্তাহীন চ্যানেলগুলির মাধ্যমে (যেমন ইমেল) সংরক্ষণ বা প্রেরণ করা উচিত নয়। আপনি এটি ব্যবহার করে কাজ শেষ করার পর সাথে সাথে মুছে ফেলুন।" + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "আপনি কোনও সংস্থার অন্তর্ভুক্ত নন। সংগঠনগুলি আপনাকে নিরাপদে অন্য ব্যবহারকারীর সাথে বস্তুসমূহ ভাগ করে নেওয়ার অনুমতি দেয়।" + }, + "noCollectionsInList": { + "message": "তালিকার জন্য কোনও সংগ্রহ নেই।" + }, + "ownership": { + "message": "মালিকানা" + }, + "whoOwnsThisItem": { + "message": "এই বস্তুটির মালিক কে?" + }, + "strong": { + "message": "শক্তিশালী", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "ভাল", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "দুর্বল", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "দুর্বল মূল পাসওয়ার্ড" + }, + "weakMasterPasswordDesc": { + "message": "আপনার চয়নকৃত মূল পাসওয়ার্ডটি দুর্বল। আপনার Bitwarden অ্যাকাউন্টটি সঠিকভাবে সুরক্ষিত করার জন্য আপনার একটি শক্তিশালী মূল পাসওয়ার্ড (বা একটি পাসফ্রেজ) ব্যবহার করা উচিত। আপনি কি নিশ্চিত যে এই মূল পাসওয়ার্ডটি ব্যবহার করতে চান?" + }, + "pin": { + "message": "পিন", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "পিন দিয়ে আনলক" + }, + "setYourPinCode": { + "message": "Bitwarden আনলক করার জন্য আপনার পিন কোডটি সেট করুন। আপনি যদি অ্যাপ্লিকেশনটি থেকে পুরোপুরি লগ আউট করেন তবে আপনার পিন সেটিংস রিসেট করা হবে।" + }, + "pinRequired": { + "message": "পিন কোড প্রয়োজন।" + }, + "invalidPin": { + "message": "অবৈধ পিন কোড।" + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "কমপক্ষে একটি সংগ্রহ নির্বাচন করুন।" + }, + "premiumUpdated": { + "message": "আপনি প্রিমিয়ামে আপগ্রেড করেছেন।" + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "সেবা পাবার শর্ত" + }, + "privacyPolicy": { + "message": "গোপনীয়তা নীতি" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "নকল" + }, + "passwordGeneratorPolicyInEffect": { + "message": "এক বা একাধিক সংস্থার নীতিগুলি আপনার উৎপাদকের সেটিংসকে প্রভাবিত করছে।" + }, + "vaultTimeoutAction": { + "message": "ভল্টের সময়সীমা কর্ম" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "আবর্জনা", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "আবর্জনাতে খুঁজুন" + }, + "permanentlyDeleteItem": { + "message": "স্থায়ীভাবে বস্তু মুছুন" + }, + "permanentlyDeleteItemConfirmation": { + "message": "আপনি কি নিশ্চিত এই বস্তুটি স্থায়ীভাবে মুছতে চান?" + }, + "permanentlyDeletedItem": { + "message": "বস্তুটি স্থায়ীভাবে মুছে ফেলা হয়েছে" + }, + "restoreItem": { + "message": "বস্তু পুনরুদ্ধার" + }, + "restoreItemConfirmation": { + "message": "আপনি কি নিশ্চিত যে আপনি এই বস্তুটি পুনরুদ্ধার করতে চান?" + }, + "restoredItem": { + "message": "বস্তু পুনরুদ্ধারকৃত" + }, + "permanentlyDelete": { + "message": "স্থায়ীভাবে বস্তু মুছুন" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "লগ আউট করা আপনার ভল্টের সমস্ত অ্যাক্সেস সরিয়ে ফেলবে এবং সময়সীমার পরে অনলাইন প্রমাণীকরণের প্রয়োজন। আপনি কি নিশ্চিত যে এই সেটিংটি ব্যবহার করবেন?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "সময়সীমা কর্ম নিশ্চিতকরণ" + }, + "enterpriseSingleSignOn": { + "message": "এন্টারপ্রাইজ একক সাইন-অন" + }, + "setMasterPassword": { + "message": "মূল পাসওয়ার্ড ধার্য করুন" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "নতুন মূল পাসওয়ার্ড" + }, + "confirmNewMasterPass": { + "message": "নতুন মূল পাসওয়ার্ড নিশ্চিত করুন" + }, + "masterPasswordPolicyInEffect": { + "message": "এক বা একাধিক সংস্থার নীতিগুলির কারণে নিম্নলিখিত প্রয়োজনসমূহ মূল পাসওয়ার্ডের পূরণ করা প্রয়োজন:" + }, + "policyInEffectMinComplexity": { + "message": "$SCORE$ এর সর্বনিম্ন জটিলতার স্কোর", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "$LENGTH$ এর সর্বনিম্ন দৈর্ঘ্য", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "এক বা একাধিক বড় হাতের অক্ষর রয়েছে" + }, + "policyInEffectLowercase": { + "message": "এক বা একাধিক ছোট হাতের অক্ষর রয়েছে" + }, + "policyInEffectNumbers": { + "message": "এক বা একাধিক সংখ্যা রয়েছে" + }, + "policyInEffectSpecial": { + "message": "নিম্নলিখিত বিশেষ অক্ষরগুলির একটি বা একাধিক রয়েছে $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "আপনার নতুন মূল পাসওয়ার্ড নীতির প্রয়োজনীয়তা পূরণ করে না।" + }, + "acceptPolicies": { + "message": "এই বাক্সটি টিক করে আপনি নিম্নলিখিতগুলিতে সম্মত হন:" + }, + "acceptPoliciesError": { + "message": "পরিষেবার শর্তাদি এবং গোপনীয়তা নীতি স্বীকার করা হয়নি।" + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "বায়োমেট্রিকস সক্ষম নেই" + }, + "biometricsNotEnabledDesc": { + "message": "ব্রাউজার বায়োমেট্রিক্সের জন্য প্রথমে সেটিংসে ডেস্কটপ বায়োমেট্রিক সক্ষম করা প্রয়োজন।" + }, + "personalOwnershipSubmitError": { + "message": "একটি এন্টারপ্রাইজ নীতির কারণে, আপনি আপনার ব্যক্তিগত ভল্টে বস্তুসমূহ সংরক্ষণ করা থেকে সীমাবদ্ধ। একটি প্রতিষ্ঠানের মালিকানা বিকল্পটি পরিবর্তন করুন এবং উপলভ্য সংগ্রহগুলি থেকে চয়ন করুন।" + }, + "hintEqualsPassword": { + "message": "আপনার পাসওয়ার্ডের ইঙ্গিতটি আপনার পাসওয়ার্ড হতে পারবে না।" + }, + "personalOwnershipPolicyInEffect": { + "message": "একটি প্রতিষ্ঠানের নীতি আপনার মালিকানা বিকল্পগুলিকে প্রভাবিত করছে।" + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json new file mode 100644 index 0000000000..be70aeb5a4 --- /dev/null +++ b/apps/desktop/src/locales/bs/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filteri" + }, + "allItems": { + "message": "Sve spremljene lozinke" + }, + "favorites": { + "message": "Omiljene stavke" + }, + "types": { + "message": "Vrste" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeCard": { + "message": "Kartica" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sigurna bilješka" + }, + "folders": { + "message": "Folderi" + }, + "collections": { + "message": "Kolekcije lozinki" + }, + "searchVault": { + "message": "Pretraživanje trezora" + }, + "addItem": { + "message": "Dodaj stavku" + }, + "shared": { + "message": "Podijeljeno" + }, + "share": { + "message": "Podijeli" + }, + "moveToOrganization": { + "message": "Premjesti u organizaciju" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ premješteno u $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Odaberi organizaciju u koju želiš premjestiti ovu stavku. Premještanje prenosi vlasništvo stavke na organizaciju. Nakon premještanja više nećeš biti direktni vlasnik ove stavke." + }, + "attachments": { + "message": "Prilozi" + }, + "viewItem": { + "message": "Prikaz stavke" + }, + "name": { + "message": "Naziv" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Novi URI" + }, + "username": { + "message": "Korisničko ime" + }, + "password": { + "message": "Lozinka" + }, + "passphrase": { + "message": "Fraza/izrazna lozinka" + }, + "editItem": { + "message": "Uredi stavku" + }, + "emailAddress": { + "message": "E-Mail adresa" + }, + "verificationCodeTotp": { + "message": "Verifikacioni kod (TOTP)" + }, + "website": { + "message": "Web stranica" + }, + "notes": { + "message": "Bilješke" + }, + "customFields": { + "message": "Prilagođena polja" + }, + "launch": { + "message": "Pokreni" + }, + "copyValue": { + "message": "Kopiraj vrijednost", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimiziraj pri kopiranju u privremenu memoriju" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimiziraj pri kopiranju stavke u privremenu memoriju." + }, + "toggleVisibility": { + "message": "Prikaži/Sakrij" + }, + "toggleCollapse": { + "message": "Sažmi/Proširi", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Ime vlasnika kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Vrsta kartice" + }, + "expiration": { + "message": "Datum isteka" + }, + "securityCode": { + "message": "Sigurnosni kod" + }, + "identityName": { + "message": "Ime identiteta" + }, + "company": { + "message": "Kompanija" + }, + "ssn": { + "message": "Broj socijalnog osiguranja / Jmbg" + }, + "passportNumber": { + "message": "Broj pasoša" + }, + "licenseNumber": { + "message": "Broj vozačke dozvole" + }, + "email": { + "message": "E Mail" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresa" + }, + "premiumRequired": { + "message": "Potrebno premium članstvo" + }, + "premiumRequiredDesc": { + "message": "Za korištenje ove funkcije potrebno je premium članstvo." + }, + "errorOccurred": { + "message": "Došlo je do greške." + }, + "error": { + "message": "Greška" + }, + "january": { + "message": "Januar" + }, + "february": { + "message": "Februar" + }, + "march": { + "message": "Mart" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Maj" + }, + "june": { + "message": "Juni" + }, + "july": { + "message": "Juli" + }, + "august": { + "message": "August" + }, + "september": { + "message": "Septembar" + }, + "october": { + "message": "Oktobar" + }, + "november": { + "message": "Novembar" + }, + "december": { + "message": "Decembar" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Naslov" + }, + "mr": { + "message": "G-din" + }, + "mrs": { + "message": "G-đa" + }, + "ms": { + "message": "G-đica" + }, + "dr": { + "message": "dr." + }, + "expirationMonth": { + "message": "Mjesec isteka" + }, + "expirationYear": { + "message": "Godina isteka" + }, + "select": { + "message": "Odaberi" + }, + "other": { + "message": "Ostalo" + }, + "generatePassword": { + "message": "Generiraj lozinku" + }, + "type": { + "message": "Vrsta" + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje ime" + }, + "lastName": { + "message": "Prezime" + }, + "fullName": { + "message": "Ime i prezime" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Grad" + }, + "stateProvince": { + "message": "Država / Pokrajina" + }, + "zipPostalCode": { + "message": "Poštanski broj" + }, + "country": { + "message": "Država" + }, + "save": { + "message": "Spremi" + }, + "cancel": { + "message": "Otkaži" + }, + "delete": { + "message": "Izbriši" + }, + "favorite": { + "message": "Omiljene stavke" + }, + "edit": { + "message": "Uredi" + }, + "authenticatorKeyTotp": { + "message": "Ključ autentifikatora (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "Novo prilagođeno polje" + }, + "value": { + "message": "Vrijednost" + }, + "dragToSort": { + "message": "Prevucite za sortiranje" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Sakriveno" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Povezano sa", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Povezana vrijednost", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Ukloni" + }, + "nameRequired": { + "message": "Ime je obavezno." + }, + "addedItem": { + "message": "Stavka dodana" + }, + "editedItem": { + "message": "Stavka izmijenjena" + }, + "deleteItem": { + "message": "Izbriši stavku" + }, + "deleteFolder": { + "message": "Izbriši foldere" + }, + "deleteAttachment": { + "message": "Izbriši priložene fajlove" + }, + "deleteItemConfirmation": { + "message": "Želite li zaista obrisati?" + }, + "deletedItem": { + "message": "Stavka obrisana" + }, + "overwritePasswordConfirmation": { + "message": "Da li ste sigurni da želite da zamijenite trenutnu lozinku?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Nema foldera", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj folder" + }, + "editFolder": { + "message": "Uredite folder" + }, + "regeneratePassword": { + "message": "Ponovno generiraj lozinku" + }, + "copyPassword": { + "message": "Kopirajte lozinku" + }, + "copyUri": { + "message": "Kopiraj URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopira Verifikacioni kod (TOTP)" + }, + "length": { + "message": "Dužina" + }, + "numWords": { + "message": "Broj riječi" + }, + "wordSeparator": { + "message": "Odvajač riječi" + }, + "capitalize": { + "message": "Prva slova velika", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Uključi broj" + }, + "close": { + "message": "Zatvori" + }, + "minNumbers": { + "message": "Minimalno brojeva" + }, + "minSpecial": { + "message": "Minimalno posebnih znakova", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izbjegavaj dvosmislene znakove" + }, + "searchCollection": { + "message": "Pretraži kolekciju" + }, + "searchFolder": { + "message": "Pretraži folder" + }, + "searchFavorites": { + "message": "Pretraživanje favorita" + }, + "searchType": { + "message": "Tip pretrage", + "description": "Search item type" + }, + "newAttachment": { + "message": "Priloži novu datoteku" + }, + "deletedAttachment": { + "message": "Izbrisani priloženi fajl/ovi" + }, + "deleteAttachmentConfirmation": { + "message": "Da li ste sigurni da želite obrisati priloženu datoteku?" + }, + "attachmentSaved": { + "message": "Priložena datoteka je spremljena." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Odaberite datoteku." + }, + "maxFileSize": { + "message": "Maksimalna veličina datoteke je 500 MB." + }, + "updateKey": { + "message": "Ovu funkciju ne možete koristiti dok ne ažurirate ključ za šifrovanje." + }, + "editedFolder": { + "message": "Uređen folder" + }, + "addedFolder": { + "message": "Folder dodan" + }, + "deleteFolderConfirmation": { + "message": "Sigurno želiš izbrisati ovaj Folder?" + }, + "deletedFolder": { + "message": "Folder izbrisan" + }, + "loginOrCreateNewAccount": { + "message": "Prijavite se ili napravite novi račun da biste pristupili svom sigurnom trezoru." + }, + "createAccount": { + "message": "Napravi račun" + }, + "logIn": { + "message": "Prijavite se" + }, + "submit": { + "message": "Potvrdi" + }, + "masterPass": { + "message": "Master/glavna šifra" + }, + "masterPassDesc": { + "message": "Glavna lozinka je lozinka koju koristite za pristup Vašem trezoru. Veoma je važno da ne zaboravite glavnu lozinku. Ne postoji način da povratite lozinku u slučaju da je zaboravite." + }, + "masterPassHintDesc": { + "message": "Nagoveštaj glavne lozinke može Vam pomoći da zapamtite lozinku ako je zaboravite." + }, + "reTypeMasterPass": { + "message": "Ponovo unesite glavnu lozinku" + }, + "masterPassHint": { + "message": "Nagovještaj za glavnu lozinku (opcionalno)" + }, + "settings": { + "message": "Postavke" + }, + "passwordHint": { + "message": "Nagovještaj lozinke" + }, + "enterEmailToGetHint": { + "message": "Unesite E-Mail adresu Vašeg računa da biste dobili nagovještaj o mogućoj glavnoj lozinki." + }, + "getMasterPasswordHint": { + "message": "Dobijte nagovještaj glavne lozinke" + }, + "emailRequired": { + "message": "Potrebna je email adresa." + }, + "invalidEmail": { + "message": "Neispravna email adresa." + }, + "masterPassRequired": { + "message": "Potrebna je glavna lozinka." + }, + "masterPassLength": { + "message": "Glavna lozinka mora imati najmanje 8 znakova." + }, + "masterPassDoesntMatch": { + "message": "Potvrda glavne lozinke se ne podudara." + }, + "newAccountCreated": { + "message": "Tvoj novi račun je kreiran! Sada se možeš prijaviti." + }, + "masterPassSent": { + "message": "Poslali smo vam e-mail sa podsjetnikom za glavnu lozinku." + }, + "unexpectedError": { + "message": "Neočekivana greška se dogodila." + }, + "itemInformation": { + "message": "Informacije o stavki" + }, + "noItemsInList": { + "message": "Nema podataka za prikazati." + }, + "sendVerificationCode": { + "message": "Pošalji verifikacijski kod na E-Mail" + }, + "sendCode": { + "message": "Pošalji kod" + }, + "codeSent": { + "message": "Kod poslan" + }, + "verificationCode": { + "message": "Verifikacioni kod" + }, + "confirmIdentity": { + "message": "Potvrdite lozinku za nastavak." + }, + "verificationCodeRequired": { + "message": "Verifikacijski kod je neophodan." + }, + "invalidVerificationCode": { + "message": "Neispravan verifikacijski kod" + }, + "continue": { + "message": "Nastavi" + }, + "enterVerificationCodeApp": { + "message": "Unesite 6-ocifreni verifikacioni kod iz Vaše aplikacije za potvrdu autentičnosti." + }, + "enterVerificationCodeEmail": { + "message": "Unesite 6-ocifreni verifikacioni kod koji je E-Mailom poslan na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verifikacijski E-Mail poslan je na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamti me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Ponovo pošaljite E-Mail sa verifikacionim kodom" + }, + "useAnotherTwoStepMethod": { + "message": "Koristite drugi način prijavljivanja u dva koraka" + }, + "insertYubiKey": { + "message": "Ubaci svoj YubiKey u USB slot računara, a zatim dodirni njegovu tipku." + }, + "insertU2f": { + "message": "Ubaci svoj sigurnosni ključ u USB slot kompjutera. Ako ima tipku, dodirni je." + }, + "recoveryCodeDesc": { + "message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvom računu." + }, + "recoveryCodeTitle": { + "message": "Kod za oporavak" + }, + "authenticatorAppTitle": { + "message": "Aplikacija za autentifikaciju" + }, + "authenticatorAppDesc": { + "message": "Koristi aplikaciju za autentifikaciju (npr. Authy ili Google Authentifikator) za generiranje kontrolnih kodova.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP sigurnosni ključ" + }, + "yubiKeyDesc": { + "message": "Koristi YubiKey za pristup svom računu. Radi s YubiKey 4, 4 Nano, 4C i NEO uređajima." + }, + "duoDesc": { + "message": "Potvrdi sa Duo Security pomoću aplikacije Duo Mobile, SMS-om, telefonskim pozivom ili U2F sigurnosnim ključem.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Potvrdi sa Duo Security za svoju organizaciju pomoću aplikacije Duo Mobile, SMS-om, telefonskim pozivom ili U2F sigurnosnim ključem.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Koristi bilo koji WebAuthn omogućeni sigurnosni ključ za pristup svojem računu." + }, + "emailTitle": { + "message": "E-Mail " + }, + "emailDesc": { + "message": "Verifikacijski kodovi će biti poslani E-Mailom." + }, + "loginUnavailable": { + "message": "Prijava nije moguća" + }, + "noTwoStepProviders": { + "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim, niti jedan od konfiguriranih pružatelja prijave u dva koraka ne podržava ovaj uređaj." + }, + "noTwoStepProviders2": { + "message": "Dodaj dodatne pružatelje koji su bolje podržani na uređajima (npr. aplikacija Autentifikator)." + }, + "twoStepOptions": { + "message": "Opcije prijave u dva koraka" + }, + "selfHostedEnvironment": { + "message": "Vlastito hosting okruženje" + }, + "selfHostedEnvironmentFooter": { + "message": "Navedite osnovni URL vaše lokalne Bitwarden instalacije." + }, + "customEnvironment": { + "message": "Prilagođeno okruženje" + }, + "customEnvironmentFooter": { + "message": "Za napredne korisnike. Samostalno možeš odrediti osnovni URL svake usluge." + }, + "baseUrl": { + "message": "URL servera" + }, + "apiUrl": { + "message": "URL API servera" + }, + "webVaultUrl": { + "message": "URL servera web trezora" + }, + "identityUrl": { + "message": "URL identitet servera" + }, + "notificationsUrl": { + "message": "URL servera obavijesti" + }, + "iconsUrl": { + "message": "URL adresa servera ikona" + }, + "environmentSaved": { + "message": "URL adrese okruženja su spremljene." + }, + "ok": { + "message": "Uredu" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "overwritePassword": { + "message": "Prebriši lozinku" + }, + "learnMore": { + "message": "Saznajte više" + }, + "featureUnavailable": { + "message": "Funkcija nije dostupna" + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Sesija je istekla." + }, + "logOutConfirmation": { + "message": "Da li ste sigurni da želite da se odjavite?" + }, + "logOut": { + "message": "Odjavi se" + }, + "addNewLogin": { + "message": "Dodaj novu prijavu" + }, + "addNewItem": { + "message": "Dodaj novu stavku" + }, + "addNewFolder": { + "message": "Dodajte novi folder" + }, + "view": { + "message": "Prikaz" + }, + "account": { + "message": "Račun" + }, + "loading": { + "message": "Učitavanje..." + }, + "lockVault": { + "message": "Zaključaj trezor" + }, + "passwordGenerator": { + "message": "Generator lozinki" + }, + "contactUs": { + "message": "Kontaktirajte nas" + }, + "getHelp": { + "message": "Potraži pomoć" + }, + "fileBugReport": { + "message": "Podnesite izvještaj o greški" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Pratite nas" + }, + "syncVault": { + "message": "Sinhronizujte trezor sada" + }, + "changeMasterPass": { + "message": "Promijenite glavnu lozinku" + }, + "changeMasterPasswordConfirmation": { + "message": "Možete da promjenite svoju glavnu lozinku na bitwarden.com web trezoru. Da li želite da posjetite web stranicu sada?" + }, + "fingerprintPhrase": { + "message": "Jedinstvena fraza", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Jedinstvena fraza tvog računa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Idi na web trezor" + }, + "getMobileApp": { + "message": "Preuzmi mobilnu aplikaciju" + }, + "getBrowserExtension": { + "message": "Preuzmi proširenje za preglednik" + }, + "syncingComplete": { + "message": "Sinhronizacija je završena" + }, + "syncingFailed": { + "message": "Sinhronizacija nije uspjela" + }, + "yourVaultIsLocked": { + "message": "Vaš trezor je zaključan. Potvrdite glavnu lozinku da nastavite." + }, + "unlock": { + "message": "Otključaj" + }, + "loggedInAsOn": { + "message": "Prijavljen kao $EMAIL$ na $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Neispravna glavna lozinka" + }, + "twoStepLoginConfirmation": { + "message": "Prijava u dva koraka čini Vaš račun sigurnijim tako što zahtjeva da verifikujete svoje podatke pomoću drugog uređaja, kao što su sigurnosni ključ, aplikacija za autentifikaciju, SMS, telefonski poziv ili E-Mail. Prijavljivanje u dva koraka može se omogućiti na bitwarden.com web trezoru. Da li želite da posjetite web stranicu sada?" + }, + "twoStepLogin": { + "message": "Prijava u dva koraka" + }, + "vaultTimeout": { + "message": "Vremensko ograničenje trezora" + }, + "vaultTimeoutDesc": { + "message": "Odaberi kada će za koliko vremena će isteći aktivnost trezora i biti izvršena odabrana radnja." + }, + "immediately": { + "message": "Odmah" + }, + "tenSeconds": { + "message": "10 sekundi" + }, + "twentySeconds": { + "message": "20 sekundi" + }, + "thirtySeconds": { + "message": "30 sekundi" + }, + "oneMinute": { + "message": "1 minuta" + }, + "twoMinutes": { + "message": "2 minute" + }, + "fiveMinutes": { + "message": "5 minuta" + }, + "fifteenMinutes": { + "message": "15 minuta" + }, + "thirtyMinutes": { + "message": "30 minuta" + }, + "oneHour": { + "message": "1 sat" + }, + "fourHours": { + "message": "4 sata" + }, + "onIdle": { + "message": "Na sistemskoj pripravnosti" + }, + "onSleep": { + "message": "Na sistemskom mirovanju" + }, + "onLocked": { + "message": "Na sistemskom zaključavanju" + }, + "onRestart": { + "message": "Kod ponovnog pokretanja" + }, + "never": { + "message": "Nikad" + }, + "security": { + "message": "Sigurnost" + }, + "clearClipboard": { + "message": "Očisti međumemoriju", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatski očistiti kopirane vrijednosti iz vaše međumemorije.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Onemogućite ikone web lokacije" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "Kada se aplikacija prvi put pokrene, prikaži samo ikonu u sistemskoj traci." + }, + "startToMenuBar": { + "message": "Pokreni u traci menija" + }, + "startToMenuBarDesc": { + "message": "Kada se aplikacija prvi put pokrene, prikaži samo ikonu u sistemskoj traci." + }, + "openAtLogin": { + "message": "Automatsko pokretanje prilikom prijavljivanja" + }, + "openAtLoginDesc": { + "message": "Automatski pokreni Bitwarden desktop aplikaciju kod prijave." + }, + "alwaysShowDock": { + "message": "Uvijek prikaži u Dock-u" + }, + "alwaysShowDockDesc": { + "message": "Prikaži Bitwareden ikonu u Docku čak i kada je minimiziran u traku s izbornicima." + }, + "confirmTrayTitle": { + "message": "Potvrdi onemogućavanje trake" + }, + "confirmTrayDesc": { + "message": "Ako onemogućite ovo podešavanje sva ostala podešavanja vezana za sistemsku traku će također biti onemogućena." + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Promijeni jezik aplikacije. Potrebno je ponovno pokretanje." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Promjeni boju teme u aplikaciji." + }, + "dark": { + "message": "Tamno", + "description": "Dark color" + }, + "light": { + "message": "Svijetlo", + "description": "Light color" + }, + "copy": { + "message": "Kopiraj", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Provjeri ima li ažuriranja" + }, + "version": { + "message": "Verzija $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Ponovo pokreni za ažuriranje" + }, + "restartToUpdateDesc": { + "message": "Verzija $VERSION_NUM$ je spremna za instalaciju. Moraš ponovno pokrenuti Bitwarden za dovršetak instalacije. Želiš li ponovo pokrenuti i ažurirati?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Dostupna su ažuriranja" + }, + "updateAvailableDesc": { + "message": "Pronađeno je ažuriranje. Želiš li ga sada preuzeti?" + }, + "restart": { + "message": "Ponovno pokreni" + }, + "later": { + "message": "Kasnije" + }, + "noUpdatesAvailable": { + "message": "Trenutno nema ažuriranja. Već koristiš najnoviju verziju." + }, + "updateError": { + "message": "Greška pri ažuriranju" + }, + "unknown": { + "message": "Nepoznato" + }, + "copyUsername": { + "message": "Kopiraj korisničko ime" + }, + "copyNumber": { + "message": "Kopiraj broj", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopirajte sigurnosni kod", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium članstvo" + }, + "premiumManage": { + "message": "Upravljaj članstvom" + }, + "premiumManageAlert": { + "message": "Svojim članstvom možeš upravljati na bitwarden.com web trezoru. Želiš li sada posjetiti web stranicu?" + }, + "premiumRefresh": { + "message": "Osvježi status članstva" + }, + "premiumNotCurrentMember": { + "message": "Trenutno nisi premium član." + }, + "premiumSignUpAndGet": { + "message": "Prijavi se za premium članstvo, čime dobijaš:" + }, + "premiumSignUpStorage": { + "message": "1 GB šifriranog prostora za pohranu podataka." + }, + "premiumSignUpTwoStep": { + "message": "Dodatne mogućnosti za prijavu u dva koraka kao što su YubiKey, FIDO U2F i Duo." + }, + "premiumSignUpReports": { + "message": "Higijenu lozinki, zdravlje računa i izvještaje o krađi podataka radi zaštite svojeg trezora." + }, + "premiumSignUpTotp": { + "message": "Generator TOTP kontrolnog koda (2FA) za prijave u tvom trezoru." + }, + "premiumSignUpSupport": { + "message": "Prioritetnu korisničku podršku." + }, + "premiumSignUpFuture": { + "message": "Sve buduće premium značajke. Uskoro više!" + }, + "premiumPurchase": { + "message": "Kupi premium članstvo" + }, + "premiumPurchaseAlert": { + "message": "Svojim članstvom možeš upravljati na bitwarden.com web trezoru. Želiš li sada posjetiti web stranicu?" + }, + "premiumCurrentMember": { + "message": "Ti si premium član!" + }, + "premiumCurrentMemberThanks": { + "message": "Hvala ti što podupireš Bitwarden." + }, + "premiumPrice": { + "message": "Sve za samo $PRICE$ /godišnje!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Osvježavanje završeno" + }, + "passwordHistory": { + "message": "Historija uređivanja lozinke" + }, + "clear": { + "message": "Obriši", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "Ne pripadaš niti jednoj organizaciji. Organizacije omogućuju sigurno dijeljenje stavki s drugim korisnicima." + }, + "noCollectionsInList": { + "message": "Nema kolekcija za prikazati." + }, + "ownership": { + "message": "Vlasništvo" + }, + "whoOwnsThisItem": { + "message": "Ko je vlasnik ove stavke?" + }, + "strong": { + "message": "Jaka", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobra", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Slaba", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Slaba glavna lozinka" + }, + "weakMasterPasswordDesc": { + "message": "Odabrana glavna lozinka je slaba. Trebaš koristiti jaču glavnu lozinku (ili frazu) kako bi tvoj Bitwarden račun bio pravilno zaštićen. Sigurno želiš koristiti ovakvu, slabu glavnu lozinku?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json new file mode 100644 index 0000000000..dccdbd97e1 --- /dev/null +++ b/apps/desktop/src/locales/ca/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtres" + }, + "allItems": { + "message": "Tots els elements" + }, + "favorites": { + "message": "Preferits" + }, + "types": { + "message": "Tipus" + }, + "typeLogin": { + "message": "Inici de sessió" + }, + "typeCard": { + "message": "Targeta" + }, + "typeIdentity": { + "message": "Identitat" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "folders": { + "message": "Carpetes" + }, + "collections": { + "message": "Col·leccions" + }, + "searchVault": { + "message": "Cerca en la caixa forta" + }, + "addItem": { + "message": "Afegeix element" + }, + "shared": { + "message": "Compartit" + }, + "share": { + "message": "Comparteix" + }, + "moveToOrganization": { + "message": "Desplaça a l'organització" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ desplaçat a $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Trieu una organització a la qual vulgueu desplaçar aquest element. El trasllat a una organització transfereix la propietat de l'element a aquesta organització. Ja no sereu el propietari directe d'aquest element una vegada s'haja mogut." + }, + "attachments": { + "message": "Adjunts" + }, + "viewItem": { + "message": "Visualitza l'element" + }, + "name": { + "message": "Nom" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nova URI" + }, + "username": { + "message": "Nom d'usuari" + }, + "password": { + "message": "Contrasenya" + }, + "passphrase": { + "message": "Frase de pas" + }, + "editItem": { + "message": "Edita l'element" + }, + "emailAddress": { + "message": "Adreça electrònica" + }, + "verificationCodeTotp": { + "message": "Codi de verificació (TOTP)" + }, + "website": { + "message": "Lloc web" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Camps personalitzats" + }, + "launch": { + "message": "Inicia" + }, + "copyValue": { + "message": "Copia el valor", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimitzeu quan feu una còpia al porta-retalls" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimitzeu quan copieu dades d'un element al porta-retalls." + }, + "toggleVisibility": { + "message": "Commuta la visibilitat" + }, + "toggleCollapse": { + "message": "Redueix/Amplia", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Nom del titular de la targeta" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Caducitat" + }, + "securityCode": { + "message": "Codi de seguretat" + }, + "identityName": { + "message": "Nom d'identitat" + }, + "company": { + "message": "Empresa" + }, + "ssn": { + "message": "Número de la Seguretat Social" + }, + "passportNumber": { + "message": "Número de passaport" + }, + "licenseNumber": { + "message": "Número de llicència" + }, + "email": { + "message": "Correu electrònic" + }, + "phone": { + "message": "Telèfon" + }, + "address": { + "message": "Adreça" + }, + "premiumRequired": { + "message": "Premium requerit" + }, + "premiumRequiredDesc": { + "message": "Cal una subscripció premium per utilitzar aquesta característica." + }, + "errorOccurred": { + "message": "S'ha produït un error." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "Gener" + }, + "february": { + "message": "Febrer" + }, + "march": { + "message": "Març" + }, + "april": { + "message": "Abril" + }, + "may": { + "message": "Maig" + }, + "june": { + "message": "Juny" + }, + "july": { + "message": "Juliol" + }, + "august": { + "message": "Agost" + }, + "september": { + "message": "Setembre" + }, + "october": { + "message": "Octubre" + }, + "november": { + "message": "Novembre" + }, + "december": { + "message": "Desembre" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Títol" + }, + "mr": { + "message": "Sr." + }, + "mrs": { + "message": "Sra." + }, + "ms": { + "message": "Srta." + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Mes de venciment" + }, + "expirationYear": { + "message": "Any de venciment" + }, + "select": { + "message": "Selecciona" + }, + "other": { + "message": "Altres" + }, + "generatePassword": { + "message": "Genera contrasenya" + }, + "type": { + "message": "Tipus" + }, + "firstName": { + "message": "Nom" + }, + "middleName": { + "message": "Segon nom" + }, + "lastName": { + "message": "Cognoms" + }, + "fullName": { + "message": "Nom complet" + }, + "address1": { + "message": "Adreça 1" + }, + "address2": { + "message": "Adreça 2" + }, + "address3": { + "message": "Adreça 3" + }, + "cityTown": { + "message": "Localitat" + }, + "stateProvince": { + "message": "Estat/província" + }, + "zipPostalCode": { + "message": "Codi postal" + }, + "country": { + "message": "País" + }, + "save": { + "message": "Guarda" + }, + "cancel": { + "message": "Cancel·la" + }, + "delete": { + "message": "Suprimeix" + }, + "favorite": { + "message": "Preferit" + }, + "edit": { + "message": "Edita" + }, + "authenticatorKeyTotp": { + "message": "Clau d'autenticació (TOTP)" + }, + "folder": { + "message": "Carpeta" + }, + "newCustomField": { + "message": "Nou camp personalitzat" + }, + "value": { + "message": "Valor" + }, + "dragToSort": { + "message": "Arrossega per ordenar" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Amagat" + }, + "cfTypeBoolean": { + "message": "Booleà" + }, + "cfTypeLinked": { + "message": "Enllaçat", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Valor enllaçat", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Suprimeix" + }, + "nameRequired": { + "message": "El nom és obligatori." + }, + "addedItem": { + "message": "Element afegit" + }, + "editedItem": { + "message": "Element editat" + }, + "deleteItem": { + "message": "Suprimeix element" + }, + "deleteFolder": { + "message": "Suprimeix carpeta" + }, + "deleteAttachment": { + "message": "Suprimeix adjunt" + }, + "deleteItemConfirmation": { + "message": "Esteu segur que voleu suprimir aquest element?" + }, + "deletedItem": { + "message": "S'ha enviat l'element a la paperera" + }, + "overwritePasswordConfirmation": { + "message": "Esteu segur que voleu sobreescriure la contrasenya actual?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Cap carpeta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Afegeix carpeta" + }, + "editFolder": { + "message": "Edita la carpeta" + }, + "regeneratePassword": { + "message": "Regenera contrasenya" + }, + "copyPassword": { + "message": "Copia contrasenya" + }, + "copyUri": { + "message": "Copia URI" + }, + "copyVerificationCodeTotp": { + "message": "Copia codi de verificació (TOTP)" + }, + "length": { + "message": "Longitud" + }, + "numWords": { + "message": "Nombre de paraules" + }, + "wordSeparator": { + "message": "Separador de paraules" + }, + "capitalize": { + "message": "Majúscules inicials", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inclou número" + }, + "close": { + "message": "Tanca" + }, + "minNumbers": { + "message": "Mínim de caràcters númerics" + }, + "minSpecial": { + "message": "Mínim de caràcters especials", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Eviteu caràcters ambigus" + }, + "searchCollection": { + "message": "Cerca en la col·lecció" + }, + "searchFolder": { + "message": "Cerca en la carpeta" + }, + "searchFavorites": { + "message": "Cerca als preferits" + }, + "searchType": { + "message": "Tipus de Cerca", + "description": "Search item type" + }, + "newAttachment": { + "message": "Afegeix un adjunt nou" + }, + "deletedAttachment": { + "message": "Adjunt suprimit" + }, + "deleteAttachmentConfirmation": { + "message": "Esteu segur que voleu suprimir aquest adjunt?" + }, + "attachmentSaved": { + "message": "S'ha guardat el fitxer adjunt." + }, + "file": { + "message": "Fitxer" + }, + "selectFile": { + "message": "Seleccioneu un fitxer." + }, + "maxFileSize": { + "message": "La mida màxima del fitxer és de 500 MB." + }, + "updateKey": { + "message": "No podeu utilitzar aquesta característica fins que no actualitzeu la vostra clau de xifratge." + }, + "editedFolder": { + "message": "Carpeta editada" + }, + "addedFolder": { + "message": "Carpeta afegida" + }, + "deleteFolderConfirmation": { + "message": "Esteu segur que voleu suprimir aquesta carpeta?" + }, + "deletedFolder": { + "message": "Carpeta suprimida" + }, + "loginOrCreateNewAccount": { + "message": "Inicieu sessió o creeu un compte nou per accedir a la caixa forta." + }, + "createAccount": { + "message": "Crea un compte" + }, + "logIn": { + "message": "Inicia sessió" + }, + "submit": { + "message": "Envia" + }, + "masterPass": { + "message": "Contrasenya mestra" + }, + "masterPassDesc": { + "message": "La contrasenya mestra és la clau que utilitzeu per accedir a la vostra caixa forta. És molt important que no la oblideu. No hi ha manera de recuperar-la en cas que la oblideu." + }, + "masterPassHintDesc": { + "message": "Una pista de contrasenya mestra us pot ajudar a recordar-la si l'oblideu." + }, + "reTypeMasterPass": { + "message": "Torneu a escriure la contrasenya mestra" + }, + "masterPassHint": { + "message": "Pista de la contrasenya mestra (opcional)" + }, + "settings": { + "message": "Configuració" + }, + "passwordHint": { + "message": "Pista per a la contrasenya" + }, + "enterEmailToGetHint": { + "message": "Introduïu l'adreça electrònica del vostre compte per rebre la contrasenya mestra." + }, + "getMasterPasswordHint": { + "message": "Obteniu la pista de contrasenya mestra" + }, + "emailRequired": { + "message": "L'adreça de correu electrònic és obligatòria." + }, + "invalidEmail": { + "message": "L’adreça electrònica no és vàlida." + }, + "masterPassRequired": { + "message": "La contrasenya és obligatòria." + }, + "masterPassLength": { + "message": "La contrasenya ha de contenir almenys 8 caràcters." + }, + "masterPassDoesntMatch": { + "message": "La confirmació de la contrasenya mestra no coincideix." + }, + "newAccountCreated": { + "message": "El vostre compte s'ha creat correctament. Ara ja podeu iniciar sessió." + }, + "masterPassSent": { + "message": "Hem enviat un correu electrònic amb la vostra contrasenya mestra." + }, + "unexpectedError": { + "message": "S'ha produït un error inesperat." + }, + "itemInformation": { + "message": "Informació de l'element" + }, + "noItemsInList": { + "message": "No hi ha cap element a llistar." + }, + "sendVerificationCode": { + "message": "Envia un codi de verificació al correu electrònic" + }, + "sendCode": { + "message": "Envia codi" + }, + "codeSent": { + "message": "Codi enviat" + }, + "verificationCode": { + "message": "Codi de verificació" + }, + "confirmIdentity": { + "message": "Confirmeu la vostra contrasenya per continuar." + }, + "verificationCodeRequired": { + "message": "El codi de verificació és obligatori." + }, + "invalidVerificationCode": { + "message": "Codi de verificació no vàlid" + }, + "continue": { + "message": "Continua" + }, + "enterVerificationCodeApp": { + "message": "Introduïu el codi de verificació de 6 dígits de l'aplicació autenticadora." + }, + "enterVerificationCodeEmail": { + "message": "Introduïu el codi de verificació de 6 dígits que s'ha enviat per correu electrònic a $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Correu electrònic de verificació enviat a $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Recorda'm" + }, + "sendVerificationCodeEmailAgain": { + "message": "Envia el codi de verificació altra vegada" + }, + "useAnotherTwoStepMethod": { + "message": "Utilitzeu un altre mètode d'inici de sessió en dues passes" + }, + "insertYubiKey": { + "message": "Introduïu la vostra YubiKey al port USB de l'ordinador i, a continuació, premeu el seu botó." + }, + "insertU2f": { + "message": "Introduïu la vostra clau de seguretat al port USB de l'ordinador. Si té un botó, premeu-lo." + }, + "recoveryCodeDesc": { + "message": "Heu perdut l'accés a tots els vostres proveïdors de dos factors? Utilitzeu el codi de recuperació per inhabilitar tots els proveïdors de dos factors del vostre compte." + }, + "recoveryCodeTitle": { + "message": "Codi de recuperació" + }, + "authenticatorAppTitle": { + "message": "Aplicació autenticadora" + }, + "authenticatorAppDesc": { + "message": "Utilitzeu una aplicació autenticadora (com Authy o Google Authenticator) per generar codis de verificació basats en el temps.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Clau de seguretat OTP de YubiKey" + }, + "yubiKeyDesc": { + "message": "Utilitzeu una YubiKey per accedir al vostre compte. Funciona amb els dispositius YubiKey 4, 4 Nano, 4C i NEO." + }, + "duoDesc": { + "message": "Verifiqueu amb Duo Security mitjançant l'aplicació Duo Mobile, SMS, trucada telefònica o clau de seguretat U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifiqueu amb Duo Security per a la vostra organització mitjançant l'aplicació Duo Mobile, SMS, trucada telefònica o clau de seguretat U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilitzeu qualsevol clau de seguretat habilitada per WebAuthn per accedir al vostre compte." + }, + "emailTitle": { + "message": "Correu electrònic" + }, + "emailDesc": { + "message": "Els codis de verificació els rebreu per correu electrònic." + }, + "loginUnavailable": { + "message": "Inici de sessió no disponible" + }, + "noTwoStepProviders": { + "message": "Aquest compte té habilitat l'inici de sessió en dues passes, però aquest navegador web no admet cap dels dos proveïdors configurats." + }, + "noTwoStepProviders2": { + "message": "Afegiu proveïdors addicionals que s'adapten millor als dispositius (com ara una aplicació d'autenticació)." + }, + "twoStepOptions": { + "message": "Opcions d'inici de sessió en dues passes" + }, + "selfHostedEnvironment": { + "message": "Entorn d'allotjament propi" + }, + "selfHostedEnvironmentFooter": { + "message": "Especifiqueu l'URL base de la vostra instal·lació Bitwarden allotjada en un entorn propi." + }, + "customEnvironment": { + "message": "Entorn personalitzat" + }, + "customEnvironmentFooter": { + "message": "Per a usuaris avançats. Podeu especificar l'URL base de cada servei independentment." + }, + "baseUrl": { + "message": "URL del servidor" + }, + "apiUrl": { + "message": "URL del servidor API" + }, + "webVaultUrl": { + "message": "URL del servidor de la caixa forta web" + }, + "identityUrl": { + "message": "URL del servidor d'identitat" + }, + "notificationsUrl": { + "message": "URL del servidor de notificacions" + }, + "iconsUrl": { + "message": "URL del servidor d'icones" + }, + "environmentSaved": { + "message": "S'han guardat les URL de l'entorn." + }, + "ok": { + "message": "D’acord" + }, + "yes": { + "message": "Sí" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Sobreescriu la contrasenya" + }, + "learnMore": { + "message": "Més informació" + }, + "featureUnavailable": { + "message": "Característica no disponible" + }, + "loggedOut": { + "message": "Desconnectat" + }, + "loginExpired": { + "message": "La vostra sessió ha caducat." + }, + "logOutConfirmation": { + "message": "Segur que voleu tancar la sessió?" + }, + "logOut": { + "message": "Tanca la sessió" + }, + "addNewLogin": { + "message": "Afegeix un inici de sessió nou" + }, + "addNewItem": { + "message": "Afegeix un element nou" + }, + "addNewFolder": { + "message": "Afegeix una carpeta nova" + }, + "view": { + "message": "Mostra" + }, + "account": { + "message": "Compte" + }, + "loading": { + "message": "S'està carregant..." + }, + "lockVault": { + "message": "Bloqueja caixa forta" + }, + "passwordGenerator": { + "message": "Generador de contrasenyes" + }, + "contactUs": { + "message": "Contacta'ns" + }, + "getHelp": { + "message": "Obteniu ajuda" + }, + "fileBugReport": { + "message": "Presenta un informe d'error" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Seguiu-nos" + }, + "syncVault": { + "message": "Sincronitza la caixa forta" + }, + "changeMasterPass": { + "message": "Canvia la contrasenya mestra" + }, + "changeMasterPasswordConfirmation": { + "message": "Podeu canviar la contrasenya mestra a la caixa forta web de bitwarden.com. Voleu visitar el lloc web ara?" + }, + "fingerprintPhrase": { + "message": "Frase d'empremta digital", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Frase d'empremta digital del vostre compte", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Vés a la caixa forta web" + }, + "getMobileApp": { + "message": "Obteniu l'aplicació per a mòbil" + }, + "getBrowserExtension": { + "message": "Obteniu l'extensió del navegador" + }, + "syncingComplete": { + "message": "S'ha completat la sincronització" + }, + "syncingFailed": { + "message": "Ha fallat la sincronització" + }, + "yourVaultIsLocked": { + "message": "La caixa forta està bloquejada. Comproveu la contrasenya mestra per continuar." + }, + "unlock": { + "message": "Desbloqueja" + }, + "loggedInAsOn": { + "message": "Heu iniciat sessió com a $EMAIL$ en $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Contrasenya mestra no vàlida" + }, + "twoStepLoginConfirmation": { + "message": "L'inici de sessió en dues passes fa que el vostre compte siga més segur, ja que obliga a comprovar el vostre inici de sessió amb un altre dispositiu, com ara una clau de seguretat, una aplicació autenticadora, un SMS, una trucada telefònica o un correu electrònic. Es pot habilitar l'inici de sessió en dues passes a la caixa forta web de bitwarden.com. Voleu visitar el lloc web ara?" + }, + "twoStepLogin": { + "message": "Inici de sessió en dues passes" + }, + "vaultTimeout": { + "message": "Temps d'espera de la caixa forta" + }, + "vaultTimeoutDesc": { + "message": "Trieu quan es tancarà la vostra caixa forta i feu l'acció seleccionada." + }, + "immediately": { + "message": "Immediatament" + }, + "tenSeconds": { + "message": "10 segons" + }, + "twentySeconds": { + "message": "20 segons" + }, + "thirtySeconds": { + "message": "30 segons" + }, + "oneMinute": { + "message": "1 minut" + }, + "twoMinutes": { + "message": "2 minuts" + }, + "fiveMinutes": { + "message": "5 Minuts" + }, + "fifteenMinutes": { + "message": "15 minuts" + }, + "thirtyMinutes": { + "message": "30 minuts" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 hores" + }, + "onIdle": { + "message": "En inactivitat del sistema" + }, + "onSleep": { + "message": "En aturada temporal del sistema" + }, + "onLocked": { + "message": "En bloquejar el sistema" + }, + "onRestart": { + "message": "En reiniciar" + }, + "never": { + "message": "Mai" + }, + "security": { + "message": "Seguretat" + }, + "clearClipboard": { + "message": "Neteja el porta-retalls", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Esborra automàticament els valors copiats del porta-retalls.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Inhabilita icones del lloc web" + }, + "disableFaviconDesc": { + "message": "Les icones del lloc web proporcionen una imatge que es pot reconèixer al costat de cada element d'inici de sessió a la vostra caixa forta." + }, + "enableMinToTray": { + "message": "Minimitza a icona en la safata" + }, + "enableMinToTrayDesc": { + "message": "En minimitzar la finestra, mostra una icona a la safata del sistema." + }, + "enableMinToMenuBar": { + "message": "Minimitza a la barra de menú" + }, + "enableMinToMenuBarDesc": { + "message": "En minimitzar la finestra, mostra una icona a la safata del sistema." + }, + "enableCloseToTray": { + "message": "Tanca a la icona de safata" + }, + "enableCloseToTrayDesc": { + "message": "En tancar la finestra, mostra una icona a la safata del sistema." + }, + "enableCloseToMenuBar": { + "message": "Tanca a la barra de menú" + }, + "enableCloseToMenuBarDesc": { + "message": "En minimitzar la finestra, mostra una icona a la safata del sistema." + }, + "enableTray": { + "message": "Habilita la icona de safata" + }, + "enableTrayDesc": { + "message": "Mostra sempre una icona a la safata de sistema." + }, + "startToTray": { + "message": "Inicia a la icona de safata" + }, + "startToTrayDesc": { + "message": "Quan l'aplicació s’inicia, mostra només una icona a la safata de sistema." + }, + "startToMenuBar": { + "message": "Inicia a la barra de menú" + }, + "startToMenuBarDesc": { + "message": "Quan l'aplicació s’inicia, mostra només una icona a la safata de sistema." + }, + "openAtLogin": { + "message": "Comença automàticament en iniciar la sessió" + }, + "openAtLoginDesc": { + "message": "Inicia l'aplicació Bitwarden Desktop automàticament en iniciar la sessió." + }, + "alwaysShowDock": { + "message": "Mostra sempre al Dock" + }, + "alwaysShowDockDesc": { + "message": "Mostra la icona Bitwarden al Dock fins i tot quan es minimitza a la barra de menú." + }, + "confirmTrayTitle": { + "message": "Confirma la desactivació a la safata" + }, + "confirmTrayDesc": { + "message": "Si deshabiliteu aquesta configuració, també es deshabilitaran tots els altres paràmetres relacionats amb la safata." + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Canvia l'idioma que utilitza l'aplicació. Es requereix un reinici." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Canvia el color del tema de l'aplicació." + }, + "dark": { + "message": "Fosc", + "description": "Dark color" + }, + "light": { + "message": "Clar", + "description": "Light color" + }, + "copy": { + "message": "Copia", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Cerca actualitzacions" + }, + "version": { + "message": "Versió $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Reinicia per actualitzar" + }, + "restartToUpdateDesc": { + "message": "La versió $VERSION_NUM$ està a punt per instal·lar-se. Heu de reiniciar l'aplicació per completar la instal·lació. Voleu reiniciar i actualitzar ara?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Actualització disponible" + }, + "updateAvailableDesc": { + "message": "S'ha trobat una actualització. Voleu descarregar-la ara?" + }, + "restart": { + "message": "Reinicia" + }, + "later": { + "message": "Més tard" + }, + "noUpdatesAvailable": { + "message": "No hi ha actualitzacions disponibles actualment. Esteu utilitzant l'última versió." + }, + "updateError": { + "message": "Error d'actualizació" + }, + "unknown": { + "message": "Desconegut" + }, + "copyUsername": { + "message": "Copia el nom d'usuari" + }, + "copyNumber": { + "message": "Copia el número", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copia el codi de seguretat", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Subscripció Premium" + }, + "premiumManage": { + "message": "Administra la subscripció" + }, + "premiumManageAlert": { + "message": "Podeu gestionar la vostra subscripció a la caixa forta web de bitwarden.com. Voleu visitar el lloc web ara?" + }, + "premiumRefresh": { + "message": "Actualitza la subscripció" + }, + "premiumNotCurrentMember": { + "message": "No sou actualment un membre premium." + }, + "premiumSignUpAndGet": { + "message": "Inscriviu-vos per una subscripció premium i obteniu:" + }, + "premiumSignUpStorage": { + "message": "1 GB d'emmagatzematge xifrat per als fitxers adjunts." + }, + "premiumSignUpTwoStep": { + "message": "Opcions addicionals d'inici de sessió en dues passes com ara YubiKey, FIDO U2F i Duo." + }, + "premiumSignUpReports": { + "message": "Requisits d'higiene de la contrasenya, salut del compte i informe d'infraccions de dades per mantenir la seguretat de la vostra caixa forta." + }, + "premiumSignUpTotp": { + "message": "Generador de codi de verificació TOTP (2FA) per a inici de sessió a la vostra caixa forta." + }, + "premiumSignUpSupport": { + "message": "Prioritat d'atenció al client." + }, + "premiumSignUpFuture": { + "message": "Totes les funcions premium futures. Aviat, més!" + }, + "premiumPurchase": { + "message": "Compra Premium" + }, + "premiumPurchaseAlert": { + "message": "Podeu comprar la vostra subscripció a la caixa forta web de bitwarden.com. Voleu visitar el lloc web ara?" + }, + "premiumCurrentMember": { + "message": "Sou un membre premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Gràcies per donar suport a Bitwarden." + }, + "premiumPrice": { + "message": "Tot per només $PRICE$/any!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Actualització completa" + }, + "passwordHistory": { + "message": "Historial de les contrasenyes" + }, + "clear": { + "message": "Esborra", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "No hi ha cap contrasenya a llistar." + }, + "undo": { + "message": "Desfés" + }, + "redo": { + "message": "Refés" + }, + "cut": { + "message": "Retalla", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Enganxa", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Selecciona-ho tot" + }, + "zoomIn": { + "message": "Amplia" + }, + "zoomOut": { + "message": "Allunya" + }, + "resetZoom": { + "message": "Restableix el zoom" + }, + "toggleFullScreen": { + "message": "Commuta pantalla completa" + }, + "reload": { + "message": "Torna a carregar" + }, + "toggleDevTools": { + "message": "Commuta eines de desenvolupadors" + }, + "minimize": { + "message": "Minimitza", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Porta-ho tot al davant", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Quant a Bitwarden" + }, + "services": { + "message": "Serveis" + }, + "hideBitwarden": { + "message": "Amaga Bitwarden" + }, + "hideOthers": { + "message": "Amaga els altres" + }, + "showAll": { + "message": "Mostra-ho tot" + }, + "quitBitwarden": { + "message": "Tanca Bitwarden" + }, + "valueCopied": { + "message": "S'ha copiat $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Ajuda" + }, + "window": { + "message": "Finestra" + }, + "checkPassword": { + "message": "Comprova si la contrasenya ha estat exposada." + }, + "passwordExposed": { + "message": "Aquesta contrasenya ha estat exposada $VALUE$ vegades en errors de seguretat de dades. Heu de canviar-la.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Aquesta contrasenya no s'ha trobat en cap filtració de dades coneguda. Hauries de poder utilitzar-la de manera segura." + }, + "baseDomain": { + "message": "Domini base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Amfitrió", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exacte" + }, + "startsWith": { + "message": "Comença amb" + }, + "regEx": { + "message": "Expressió regular", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Detecció de coincidències", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Detecció de coincidències per defecte", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Commuta opcions" + }, + "organization": { + "message": "Organització", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Per defecte" + }, + "exit": { + "message": "Tanca" + }, + "showHide": { + "message": "Mostra/Amaga", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Amaga a la safata" + }, + "alwaysOnTop": { + "message": "Sempre visible", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Actualitzat", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Contrasenya actualitzada", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exporta caixa forta" + }, + "fileFormat": { + "message": "Format de fitxer" + }, + "warning": { + "message": "ADVERTIMENT", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirma l'exportació de la Caixa forta" + }, + "exportWarningDesc": { + "message": "Aquesta exportació conté les dades de la vostra caixa forta en un format no xifrat. No hauríeu d'emmagatzemar o enviar el fitxer exportat a través de canals no segurs (com ara el correu electrònic). Elimineu-lo immediatament després d'haver acabat d'usar-lo." + }, + "encExportKeyWarningDesc": { + "message": "Aquesta exportació xifra les vostres dades mitjançant la clau de xifratge del vostre compte. Si alguna vegada gireu eixa clau, hauríeu d'exportar de nou, ja que no podreu desxifrar aquest fitxer d'exportació." + }, + "encExportAccountWarningDesc": { + "message": "Les claus de xifratge són exclusives de cada compte d'usuari Bitwarden, de manera que no podeu importar una exportació xifrada a un compte diferent." + }, + "noOrganizationsList": { + "message": "No pertanyeu a cap organització. Les organitzacions permeten compartir elements amb seguretat amb altres usuaris." + }, + "noCollectionsInList": { + "message": "No hi ha cap col·lecció a llistar." + }, + "ownership": { + "message": "Propietat" + }, + "whoOwnsThisItem": { + "message": "Qui és propietari d'aquest element?" + }, + "strong": { + "message": "Forta", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Bona", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Poc segura", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Contrasenya mestra poc segura" + }, + "weakMasterPasswordDesc": { + "message": "La contrasenya mestra que heu triat és poc segura. Heu d'utilitzar una contrasenya mestra segura (o una frase de pas) per protegir correctament el vostre compte de Bitwarden. Esteu segur que voleu utilitzar aquesta contrasenya mestra?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Desbloqueja amb codi PIN" + }, + "setYourPinCode": { + "message": "Configureu el vostre codi PIN per desbloquejar Bitwarden. La configuració del PIN es restablirà si tanqueu la sessió definitivament." + }, + "pinRequired": { + "message": "Es necessita el codi PIN." + }, + "invalidPin": { + "message": "El codi PIN no és vàlid." + }, + "unlockWithWindowsHello": { + "message": "Desbloqueja amb Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verifica per Bitwarden." + }, + "unlockWithTouchId": { + "message": "Desbloqueja amb Touch ID" + }, + "touchIdConsentMessage": { + "message": "desbloqueja la teva caixa forta" + }, + "noAutoPromptWindowsHello": { + "message": "No demaneu que Windows Hello en iniciar." + }, + "noAutoPromptTouchId": { + "message": "No sol·liciteu Touch ID en iniciar." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloqueja amb la contrasenya mestra en reiniciar" + }, + "preferences": { + "message": "Preferències" + }, + "enableMenuBar": { + "message": "Habilita la icona de la barra de menús" + }, + "enableMenuBarDesc": { + "message": "Mostra sempre una icona a la barra de menú." + }, + "hideToMenuBar": { + "message": "Amaga la barra de menú" + }, + "selectOneCollection": { + "message": "Heu d'escollir com a mínim una col·lecció." + }, + "premiumUpdated": { + "message": "Heu actualitzat a la versió premium." + }, + "restore": { + "message": "Restaura" + }, + "premiumManageAlertAppStore": { + "message": "Podeu gestionar la vostra subscripció des de l'App Store. \nVoleu visitar l'App Store ara?" + }, + "legal": { + "message": "Informació legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Condicions del servei" + }, + "privacyPolicy": { + "message": "Política de privacitat" + }, + "unsavedChangesConfirmation": { + "message": "Segur que voleu marxar? Si marxeu ara, la vostra informació actual no es guardarà." + }, + "unsavedChangesTitle": { + "message": "Hi ha canvis sense guardar" + }, + "clone": { + "message": "Clona" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o més polítiques d’organització afecten la configuració del generador." + }, + "vaultTimeoutAction": { + "message": "Acció del temps d'espera de la caixa forta" + }, + "vaultTimeoutActionLockDesc": { + "message": "Una caixa forta bloquejada requereix que torneu a introduir la contrasenya principal per accedir-ne de nou." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Una caixa forta desconnectada requereix que torneu a autentificar-vos per accedir-hi de nou." + }, + "lock": { + "message": "Bloqueja", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Paperera", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Cerca a la paperera" + }, + "permanentlyDeleteItem": { + "message": "Element suprimit definitivament" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Esteu segur que voleu suprimir aquest element definitivament?" + }, + "permanentlyDeletedItem": { + "message": "Element suprimit definitivament" + }, + "restoreItem": { + "message": "Restaura l'element" + }, + "restoreItemConfirmation": { + "message": "Esteu segur que voleu restaurar aquest element?" + }, + "restoredItem": { + "message": "Element restaurat" + }, + "permanentlyDelete": { + "message": "Suprimeix definitivament" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "En tancar la sessió s'eliminarà tot l'accés a la vostra caixa forta i es requerirà una autenticació en línia després del període de temps d'espera. Esteu segur que voleu utilitzar aquesta configuració?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmació de l’acció de temps d'espera de la caixa forta" + }, + "enterpriseSingleSignOn": { + "message": "Inici de sessió únic d'empresa" + }, + "setMasterPassword": { + "message": "Estableix la contrasenya mestra" + }, + "ssoCompleteRegistration": { + "message": "Per completar la sessió amb SSO, configureu una contrasenya mestra per accedir i protegir la vostra caixa forta." + }, + "newMasterPass": { + "message": "Contrasenya mestra nova" + }, + "confirmNewMasterPass": { + "message": "Confirma la contrasenya mestra nova" + }, + "masterPasswordPolicyInEffect": { + "message": "Una o més polítiques d’organització requereixen que la vostra contrasenya principal complisca els requisits següents:" + }, + "policyInEffectMinComplexity": { + "message": "Puntuació mínima de complexitat de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Longitud mínima de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Conté un o més caràcters en majúscula" + }, + "policyInEffectLowercase": { + "message": "Conté un o més caràcters en minúscula" + }, + "policyInEffectNumbers": { + "message": "Conté un o més números" + }, + "policyInEffectSpecial": { + "message": "Conté un o més dels següents caràcters especials $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "La nova contrasenya principal no compleix els requisits de la política." + }, + "acceptPolicies": { + "message": "Si activeu aquesta casella, indiqueu que esteu d’acord amb el següent:" + }, + "acceptPoliciesError": { + "message": "No s’han reconegut les condicions del servei i la declaració de privadesa." + }, + "enableBrowserIntegration": { + "message": "Habilita la integració amb el navegador" + }, + "enableBrowserIntegrationDesc": { + "message": "La integració al navegador s’utilitza per a la biometria en aquest." + }, + "browserIntegrationMasOnlyTitle": { + "message": "La integració en el navegador no és compatible" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Malauradament, la integració del navegador només és compatible amb la versió de Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "La integració en el navegador no és compatible" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Malauradament, la integració del navegador només és compatible amb la versió de Microsoft Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Requereix verificació per a la integració del navegador" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Habilita una capa de seguretat addicional mitjançant la validació de frases d'empremtes dactilars quan estableix un enllaç entre l'escriptori i el navegador. Quan està habilitat, requereix la intervenció i verificació de l'usuari cada vegada que s'estableix una connexió." + }, + "approve": { + "message": "Aprova" + }, + "verifyBrowserTitle": { + "message": "Verifiqueu la connexió del navegador" + }, + "verifyBrowserDesc": { + "message": "Assegureu-vos que l’empremta digital que es mostra és idèntica a la que es mostra a l’extensió del navegador." + }, + "biometricsNotEnabledTitle": { + "message": "La biomètrica no està habilitada" + }, + "biometricsNotEnabledDesc": { + "message": "La biometria del navegador primer necessita habilitar la biomètrica d’escriptori a la configuració." + }, + "personalOwnershipSubmitError": { + "message": "A causa d'una política empresarial, no podeu guardar elements a la vostra caixa forta personal. Canvieu l'opció Propietat en organització i trieu entre les col·leccions disponibles." + }, + "hintEqualsPassword": { + "message": "El vostre suggeriment de contrasenya no pot ser el mateix que la vostra contrasenya." + }, + "personalOwnershipPolicyInEffect": { + "message": "Una política d’organització afecta les vostres opcions de propietat." + }, + "allSends": { + "message": "Tots els Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fitxer" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Cerca Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edita Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "La meua caixa forta" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Data de supressió" + }, + "deletionDateDesc": { + "message": "El Send se suprimirà permanentment a la data i hora especificades.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Data de caducitat" + }, + "expirationDateDesc": { + "message": "Si s'estableix, l'accés a aquest Send caducarà en la data i hora especificades.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Recompte màxim d'accessos" + }, + "maxAccessCountDesc": { + "message": "Si s’estableix, els usuaris ja no podran accedir a aquest Send una vegada s’assolisca el nombre màxim d’accessos.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Recompte d’accessos actual" + }, + "disableSend": { + "message": "Deshabiliteu aquest Send perquè ningú no hi puga accedir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Opcionalment, necessiteu una contrasenya perquè els usuaris accedisquen a aquest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Notes privades sobre aquest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Enllaç Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Enllaç Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Quan accediu a Send, amaga el text per defecte", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send creat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send editat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send suprimit", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Contrasenya nova" + }, + "whatTypeOfSend": { + "message": "Quin tipus de Send és aquest?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Crea Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "El text que voleu enviar." + }, + "sendFileDesc": { + "message": "El fitxer que voleu enviar." + }, + "days": { + "message": "$DAYS$ dies", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dia" + }, + "custom": { + "message": "Personalitzat" + }, + "deleteSendConfirmation": { + "message": "Esteu segur que voleu suprimir aquest Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copia l'enllaç Send al porta-retalls", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copie l'enllaç per compartir aquest Send al meu porta-retalls després de guardar-lo." + }, + "sendDisabled": { + "message": "Send desactivat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "A causa d'una política empresarial, només podeu suprimir un Send existent.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copia l'enllaç" + }, + "disabled": { + "message": "Deshabilitat" + }, + "maxAccessCountReached": { + "message": "S'ha assolit el recompte màxim d'accesos" + }, + "expired": { + "message": "Caducat" + }, + "pendingDeletion": { + "message": "Pendent de supressió" + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "hideEmail": { + "message": "Amagueu la meua adreça de correu electrònic als destinataris." + }, + "sendOptionsPolicyInEffect": { + "message": "Una o més polítiques d'organització afecten les vostres opcions del Send." + }, + "emailVerificationRequired": { + "message": "Es requereix verificació per correu electrònic" + }, + "emailVerificationRequiredDesc": { + "message": "Heu de verificar el vostre correu electrònic per utilitzar aquesta característica." + }, + "passwordPrompt": { + "message": "Sol·licitud de la contrasenya mestra" + }, + "passwordConfirmation": { + "message": "Confirmació de la contrasenya mestra" + }, + "passwordConfirmationDesc": { + "message": "Aquesta acció està protegida. Per continuar, torneu a introduir la contrasenya principal per verificar la vostra identitat." + }, + "updatedMasterPassword": { + "message": "Contrasenya mestra actualitzada" + }, + "updateMasterPassword": { + "message": "Actualitza contrasenya mestra" + }, + "updateMasterPasswordWarning": { + "message": "Un administrador de l'organització ha canviat recentment la contrasenya principal. Per accedir a la caixa forta, heu d'actualitzar-la ara. Si continueu, es tancarà la sessió actual i heu de tornar a iniciar-la. És possible que les sessions obertes en altres dispositius continuen actives fins a una hora." + }, + "hours": { + "message": "Hores" + }, + "minutes": { + "message": "Minuts" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Les polítiques de l'organització afecten el temps d'espera de la caixa forta. El temps d'espera màxim permès d'aquesta és de $HOURS$ hores i $MINUTES$ minuts", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "El temps d'espera de la caixa forta supera les restriccions establertes per la vostra organització." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscripció automàtica" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Aquesta organització té una política empresarial que us inscriurà automàticament al restabliment de la contrasenya. La inscripció permetrà als administradors de l’organització canviar la vostra contrasenya mestra." + }, + "vaultExportDisabled": { + "message": "L'exportació de la caixa forta està desactivada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o més polítiques d'organització us impedeixen exportar la vostra caixa forta." + }, + "addAccount": { + "message": "Afig compte" + }, + "removeMasterPassword": { + "message": "Suprimiu la contrasenya mestra" + }, + "removedMasterPassword": { + "message": "S'ha suprimit la contrasenya mestra." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ està utilitzant SSO amb un servidor autoallotjat de claus. Ja no es requereix una contrasenya mestra d'inici de sessió per als membres d'aquesta organització.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Abandona l'organització" + }, + "leaveOrganizationConfirmation": { + "message": "Esteu segur que voleu eixir d'aquesta organització?" + }, + "leftOrganization": { + "message": "Heu deixat l'organització." + }, + "ssoKeyConnectorUnavailable": { + "message": "No es pot arribar al connector de claus, torneu-ho a provar més tard." + }, + "lockAllVaults": { + "message": "Bloqueja totes les caixes fortes" + }, + "accountLimitReached": { + "message": "No es pot iniciar sessió a més de 5 comptes al mateix temps." + }, + "accountPreferences": { + "message": "Preferències" + }, + "appPreferences": { + "message": "Configuració de l'aplicació (tots els comptes)" + }, + "accountSwitcherLimitReached": { + "message": "S'ha arribat al límit del compte. Tanqueu la sessió d'un compte per afegir-ne un altre." + }, + "settingsTitle": { + "message": "Configuració de l'aplicació per a $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Canvia de compte" + }, + "options": { + "message": "Opcions" + }, + "sessionTimeout": { + "message": "La sessió ha expirat. Torneu arrere i proveu d'iniciar sessió de nou." + }, + "exportingPersonalVaultTitle": { + "message": "S'està exportant la caixa forta personal" + }, + "exportingPersonalVaultDescription": { + "message": "Només s'exportaran els elements personals de la caixa forta associats a $EMAIL$. Els elements de la caixa forta de l'organització no s'inclouran.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json new file mode 100644 index 0000000000..d008e78ba3 --- /dev/null +++ b/apps/desktop/src/locales/cs/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtry" + }, + "allItems": { + "message": "Všechny položky" + }, + "favorites": { + "message": "Oblíbené" + }, + "types": { + "message": "Typy" + }, + "typeLogin": { + "message": "Přihlašovací údaje" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Identita" + }, + "typeSecureNote": { + "message": "Poznámka" + }, + "folders": { + "message": "Složky" + }, + "collections": { + "message": "Kolekce" + }, + "searchVault": { + "message": "Vyhledat v trezoru" + }, + "addItem": { + "message": "Přidat položku" + }, + "shared": { + "message": "Sdílené" + }, + "share": { + "message": "Sdílet" + }, + "moveToOrganization": { + "message": "Přesunout do organizace" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ přesunut do $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Vyberte organizaci, do které chcete tuto položku přesunout. Přesun do organizace převede vlastnictví položky této organizaci. Po přesunutí této položky již nebudete přímým vlastníkem této položky." + }, + "attachments": { + "message": "Přílohy" + }, + "viewItem": { + "message": "Zobrazit položku" + }, + "name": { + "message": "Název" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nová URI" + }, + "username": { + "message": "Uživatelské jméno" + }, + "password": { + "message": "Heslo" + }, + "passphrase": { + "message": "Heslová fráze" + }, + "editItem": { + "message": "Upravit položku" + }, + "emailAddress": { + "message": "E-mailová adresa" + }, + "verificationCodeTotp": { + "message": "Ověřovací kód (TOTP)" + }, + "website": { + "message": "Webová stránka" + }, + "notes": { + "message": "Poznámky" + }, + "customFields": { + "message": "Vlastní pole" + }, + "launch": { + "message": "Spustit" + }, + "copyValue": { + "message": "Zkopírovat hodnotu", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimalizovat při kopírování do schránky" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimalizovat při kopírování údajů položky do schránky." + }, + "toggleVisibility": { + "message": "Přepnout viditelnost" + }, + "toggleCollapse": { + "message": "Přepnout sbalení", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Jméno držitele karty" + }, + "number": { + "message": "Číslo" + }, + "brand": { + "message": "Značka" + }, + "expiration": { + "message": "Expirace" + }, + "securityCode": { + "message": "Bezpečnostní kód" + }, + "identityName": { + "message": "Název identity" + }, + "company": { + "message": "Firma" + }, + "ssn": { + "message": "Číslo sociálního pojištění" + }, + "passportNumber": { + "message": "Číslo cestovního pasu" + }, + "licenseNumber": { + "message": "Číslo dokladu totožnosti" + }, + "email": { + "message": "E-mail" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresa" + }, + "premiumRequired": { + "message": "Vyžaduje prémiové členství" + }, + "premiumRequiredDesc": { + "message": "Pro použití této funkce je potřebné prémiové členství." + }, + "errorOccurred": { + "message": "Došlo k chybě." + }, + "error": { + "message": "Chyba" + }, + "january": { + "message": "Leden" + }, + "february": { + "message": "Únor" + }, + "march": { + "message": "Březen" + }, + "april": { + "message": "Duben" + }, + "may": { + "message": "Květen" + }, + "june": { + "message": "Červen" + }, + "july": { + "message": "Červenec" + }, + "august": { + "message": "Srpen" + }, + "september": { + "message": "Září" + }, + "october": { + "message": "Říjen" + }, + "november": { + "message": "Listopad" + }, + "december": { + "message": "Prosinec" + }, + "ex": { + "message": "např.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Oslovení" + }, + "mr": { + "message": "Pan" + }, + "mrs": { + "message": "Paní" + }, + "ms": { + "message": "Slečna" + }, + "dr": { + "message": "MUDr" + }, + "expirationMonth": { + "message": "Měsíc expirace" + }, + "expirationYear": { + "message": "Rok expirace" + }, + "select": { + "message": "Vybrat" + }, + "other": { + "message": "Ostatní" + }, + "generatePassword": { + "message": "Vygenerovat heslo" + }, + "type": { + "message": "Typ" + }, + "firstName": { + "message": "Jméno" + }, + "middleName": { + "message": "Druhé jméno" + }, + "lastName": { + "message": "Příjmení" + }, + "fullName": { + "message": "Celé jméno" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Město" + }, + "stateProvince": { + "message": "Kraj / Provincie" + }, + "zipPostalCode": { + "message": "PSČ" + }, + "country": { + "message": "Stát" + }, + "save": { + "message": "Uložit" + }, + "cancel": { + "message": "Zrušit" + }, + "delete": { + "message": "Smazat" + }, + "favorite": { + "message": "Oblíbené" + }, + "edit": { + "message": "Upravit" + }, + "authenticatorKeyTotp": { + "message": "Autentizační klíč (TOTP)" + }, + "folder": { + "message": "Složka" + }, + "newCustomField": { + "message": "Nové vlastní pole" + }, + "value": { + "message": "Hodnota" + }, + "dragToSort": { + "message": "Přetáhnutím seřadíte" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Skryté" + }, + "cfTypeBoolean": { + "message": "Ano/Ne" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Smazat" + }, + "nameRequired": { + "message": "Název je povinný." + }, + "addedItem": { + "message": "Položka byla přidána" + }, + "editedItem": { + "message": "Položka byla upravena" + }, + "deleteItem": { + "message": "Smazat položku" + }, + "deleteFolder": { + "message": "Smazat složku" + }, + "deleteAttachment": { + "message": "Smazat přílohu" + }, + "deleteItemConfirmation": { + "message": "Opravdu chcete tuto položku smazat?" + }, + "deletedItem": { + "message": "Položka byla smazána" + }, + "overwritePasswordConfirmation": { + "message": "Opravdu chcete přepsat aktuální heslo?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Žádná složka", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Přidat složku" + }, + "editFolder": { + "message": "Upravit složku" + }, + "regeneratePassword": { + "message": "Vygenerovat další heslo" + }, + "copyPassword": { + "message": "Kopírovat heslo" + }, + "copyUri": { + "message": "Kopírovat URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopírovat ověřovací kód (TOTP)" + }, + "length": { + "message": "Délka" + }, + "numWords": { + "message": "Počet slov" + }, + "wordSeparator": { + "message": "Oddělovač slov" + }, + "capitalize": { + "message": "Velká písmena na začátku slova", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Zahrnout číslo" + }, + "close": { + "message": "Zavřít" + }, + "minNumbers": { + "message": "Minimální počet čísel" + }, + "minSpecial": { + "message": "Minimální počet speciálních znaků", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Použít nezaměnitelné znaky" + }, + "searchCollection": { + "message": "Vyhledat v kolekci" + }, + "searchFolder": { + "message": "Vyhledat ve složce" + }, + "searchFavorites": { + "message": "Vyhledat v oblíbených" + }, + "searchType": { + "message": "Vyhledat v typu", + "description": "Search item type" + }, + "newAttachment": { + "message": "Přidat přílohu" + }, + "deletedAttachment": { + "message": "Příloha byla smazána" + }, + "deleteAttachmentConfirmation": { + "message": "Opravdu chcete tuto přílohu smazat?" + }, + "attachmentSaved": { + "message": "Příloha byla uložena." + }, + "file": { + "message": "Soubor" + }, + "selectFile": { + "message": "Vybrat soubor." + }, + "maxFileSize": { + "message": "Maximální velikost souboru je 500 MB." + }, + "updateKey": { + "message": "Tuto funkci nemůžete použít dokud neaktualizujete svůj šifrovací klíč." + }, + "editedFolder": { + "message": "Složka byla upravena" + }, + "addedFolder": { + "message": "Složka byla přidána" + }, + "deleteFolderConfirmation": { + "message": "Opravdu chcete tuto složku smazat?" + }, + "deletedFolder": { + "message": "Složka byla smazána" + }, + "loginOrCreateNewAccount": { + "message": "Pro přístup do vašeho bezpečného trezoru se přihlaste nebo si vytvořte nový účet." + }, + "createAccount": { + "message": "Vytvořit účet" + }, + "logIn": { + "message": "Přihlásit se" + }, + "submit": { + "message": "Potvrdit" + }, + "masterPass": { + "message": "Hlavní heslo" + }, + "masterPassDesc": { + "message": "Hlavní heslo je heslo, které používáte k přístupu do vašeho trezoru. Je velmi důležité, abyste jej nezapomněli. Neexistuje totiž žádný způsob, jak heslo obnovit v případě, že jste na něj zapomněli." + }, + "masterPassHintDesc": { + "message": "Nápověda k hlavnímu heslu vám pomůže zapamatovat si heslo, pokud ho zapomenete." + }, + "reTypeMasterPass": { + "message": "Znovu zadejte hlavní heslo" + }, + "masterPassHint": { + "message": "Nápověda k hlavnímu heslu (volitelné)" + }, + "settings": { + "message": "Nastavení" + }, + "passwordHint": { + "message": "Nápověda k heslu" + }, + "enterEmailToGetHint": { + "message": "Zadejte e-mailovou adresu pro zaslání nápovědy k hlavnímu heslu." + }, + "getMasterPasswordHint": { + "message": "Zaslat nápovědu k hlavnímu heslu" + }, + "emailRequired": { + "message": "E-mailová adresa je povinná." + }, + "invalidEmail": { + "message": "Neplatná e-mailová adresa." + }, + "masterPassRequired": { + "message": "Hlavní heslo je povinné." + }, + "masterPassLength": { + "message": "Hlavní heslo musí obsahovat alespoň 8 znaků." + }, + "masterPassDoesntMatch": { + "message": "Potvrzení hlavního hesla se neshoduje." + }, + "newAccountCreated": { + "message": "Váš účet byl vytvořen! Můžete se přihlásit." + }, + "masterPassSent": { + "message": "Poslali jsme vám e-mail s nápovědou k hlavnímu heslu." + }, + "unexpectedError": { + "message": "Došlo k neznámé chybě." + }, + "itemInformation": { + "message": "Informace o položce" + }, + "noItemsInList": { + "message": "Žádné položky k zobrazení." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Odeslat kód" + }, + "codeSent": { + "message": "Kód odeslán" + }, + "verificationCode": { + "message": "Ověřovací kód" + }, + "confirmIdentity": { + "message": "Pro pokračování potvrďte svou identitu." + }, + "verificationCodeRequired": { + "message": "Ověřovací kód je povinný." + }, + "invalidVerificationCode": { + "message": "Neplatný ověřovací kód" + }, + "continue": { + "message": "Pokračovat" + }, + "enterVerificationCodeApp": { + "message": "Zadejte 6-místný kód z ověřovací aplikace." + }, + "enterVerificationCodeEmail": { + "message": "Zadejte 6místný kód z e-mailu, který byl zaslán na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Ověřovací e-mail byl zaslán na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Pamatuj si mě" + }, + "sendVerificationCodeEmailAgain": { + "message": "Znovu zaslat ověřovací kód na e-mail" + }, + "useAnotherTwoStepMethod": { + "message": "Použít jinou metodu dvoufázového přihlášení" + }, + "insertYubiKey": { + "message": "Vložte YubiKey do USB portu vašeho počítače a stiskněte jeho tlačítko." + }, + "insertU2f": { + "message": "Vložte svůj bezpečnostní klíč do USB portu vašeho počítače a pokud má tlačítko, tak jej stiskněte." + }, + "recoveryCodeDesc": { + "message": "Ztratili jste přístup ke všem nastaveným poskytovatelům dvoufázového přihlášení? Použijte obnovovací kód pro vypnutí dvoufázového přihlášení." + }, + "recoveryCodeTitle": { + "message": "Kód pro obnovení" + }, + "authenticatorAppTitle": { + "message": "Ověřovací aplikace" + }, + "authenticatorAppDesc": { + "message": "Použijte ověřovací aplikaci (jako je Authy nebo Google Authenticator) pro generování časově omezených kódů.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP bezpečnostní klíč" + }, + "yubiKeyDesc": { + "message": "Použít YubiKey pro přístup k vašemu trezoru. Podporuje YubiKey 4, 4 Nano, 4C a NEO zařízení." + }, + "duoDesc": { + "message": "Ověřit pomocí Duo Security prostřednictvím aplikace Duo Mobile, SMS, telefonního hovoru nebo U2F bezpečnostního kódu.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Ověřit pomocí Duo Security pro vaši organizaci prostřednictvím aplikace Duo Mobile, SMS, telefonního hovoru nebo U2F bezpečnostního kódu.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Použijte jakýkoliv WebAuthn bezpečnostní klíč pro přístup k vašemu účtu." + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Ověřovací kódy vám budou zaslány e-mailem." + }, + "loginUnavailable": { + "message": "Přihlášení není dostupné" + }, + "noTwoStepProviders": { + "message": "Tento účet má zapnuté dvoufázové ověřování, ale žádný z nastavených poskytovalů dvoufázového přihlášení není v tomto zařízení podporován." + }, + "noTwoStepProviders2": { + "message": "Přidejte prosím další poskytovatele, kteří jsou lépe podporováni v různých zařízeních (například ověřovací aplikace)." + }, + "twoStepOptions": { + "message": "Možnosti dvoufázového přihlášení" + }, + "selfHostedEnvironment": { + "message": "Vlastnoručně hostované prostředí" + }, + "selfHostedEnvironmentFooter": { + "message": "Zadejte základní URL adresu vlastnoručně hostované aplikace Bitwarden." + }, + "customEnvironment": { + "message": "Vlastní prostředí" + }, + "customEnvironmentFooter": { + "message": "Pro pokročilé uživatele. Můžete zadat základní URL adresu každé služby zvlášť." + }, + "baseUrl": { + "message": "URL serveru" + }, + "apiUrl": { + "message": "URL serveru API" + }, + "webVaultUrl": { + "message": "URL serveru webového trezoru" + }, + "identityUrl": { + "message": "URL serveru identity" + }, + "notificationsUrl": { + "message": "URL serveru pro oznámení" + }, + "iconsUrl": { + "message": "URL serveru ikonek" + }, + "environmentSaved": { + "message": "URL adresy vlastního prostředí byly uloženy" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Ano" + }, + "no": { + "message": "Ne" + }, + "overwritePassword": { + "message": "Přepsat heslo" + }, + "learnMore": { + "message": "Dozvědět se více" + }, + "featureUnavailable": { + "message": "Funkce není dostupná" + }, + "loggedOut": { + "message": "Odhlášení" + }, + "loginExpired": { + "message": "Platnost přihlášení vypršela." + }, + "logOutConfirmation": { + "message": "Opravdu se chcete odhlásit?" + }, + "logOut": { + "message": "Odhlásit se" + }, + "addNewLogin": { + "message": "Přidat nové přihlašovací údaje" + }, + "addNewItem": { + "message": "Přidat novou položku" + }, + "addNewFolder": { + "message": "Přidat novou složku" + }, + "view": { + "message": "Zobrazit" + }, + "account": { + "message": "Účet" + }, + "loading": { + "message": "Načítání..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Generátor hesla" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Nahlásit chybu" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Sledujte nás" + }, + "syncVault": { + "message": "Synchronizovat trezor" + }, + "changeMasterPass": { + "message": "Změnit hlavní heslo" + }, + "changeMasterPasswordConfirmation": { + "message": "Hlavní heslo si můžete změnit na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?" + }, + "fingerprintPhrase": { + "message": "Fráze otisku prstu", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Fráze otisku prstu vašeho účtu", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Otevřít webovou aplikaci" + }, + "getMobileApp": { + "message": "Stáhnout mobilní aplikaci" + }, + "getBrowserExtension": { + "message": "Stáhnout rozšíření do prohlížeče" + }, + "syncingComplete": { + "message": "Synchronizace je dokončena" + }, + "syncingFailed": { + "message": "Synchronizace selhala" + }, + "yourVaultIsLocked": { + "message": "Váš trezor je uzamčen. Pro pokračování musíte zadat hlavní heslo." + }, + "unlock": { + "message": "Odemknout" + }, + "loggedInAsOn": { + "message": "Přihlášen jako $EMAIL$ na $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Chybné hlavní heslo" + }, + "twoStepLoginConfirmation": { + "message": "Dvoufázové přihlášení činí váš účet mnohem bezpečnějším díky nutnosti po každém úspěšném přihlášení zadat ověřovací kód získaný z aplikace, SMS, e-mailu nebo telefonního hovoru. Dvoufázové přihlášení lze aktivovat na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?" + }, + "twoStepLogin": { + "message": "Dvoufázové přihlášení" + }, + "vaultTimeout": { + "message": "Časový limit trezoru" + }, + "vaultTimeoutDesc": { + "message": "Vyberte, kdy vyprší bezpečnostní limit trezoru. Poté bude provedena vybraná akce." + }, + "immediately": { + "message": "Okamžitě" + }, + "tenSeconds": { + "message": "10 sekund" + }, + "twentySeconds": { + "message": "20 sekund" + }, + "thirtySeconds": { + "message": "30 sekund" + }, + "oneMinute": { + "message": "Po 1 minutě" + }, + "twoMinutes": { + "message": "2 minuty" + }, + "fiveMinutes": { + "message": "Po 5 minutách" + }, + "fifteenMinutes": { + "message": "Po 15 minutách" + }, + "thirtyMinutes": { + "message": "Po 30 minutách" + }, + "oneHour": { + "message": "Po 1 hodině" + }, + "fourHours": { + "message": "Po 4 hodinách" + }, + "onIdle": { + "message": "Při nečinnosti systému" + }, + "onSleep": { + "message": "Při přechodu do režimu spánku" + }, + "onLocked": { + "message": "Při zamknutí systému" + }, + "onRestart": { + "message": "Při restartu systému" + }, + "never": { + "message": "Nikdy" + }, + "security": { + "message": "Zabezpečení" + }, + "clearClipboard": { + "message": "Vymazat schránku", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automaticky vymazat zkopírované hodnoty z vaší schránky.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Zakázat ikonky webových stránek" + }, + "disableFaviconDesc": { + "message": "Ikonky webových stránek zobrazí snadno rozeznatelný obrázek vedle každé položky ve vašem trezoru." + }, + "enableMinToTray": { + "message": "Minimalizovat do systémové lišty" + }, + "enableMinToTrayDesc": { + "message": "Při minimalizaci okna zobrazit ikonu v systémové liště." + }, + "enableMinToMenuBar": { + "message": "Minimalizovat do panelu nabídek" + }, + "enableMinToMenuBarDesc": { + "message": "Při minimalizaci okna, zobrazit ikonu v panelu nabídek." + }, + "enableCloseToTray": { + "message": "Zavřít do systémové lišty" + }, + "enableCloseToTrayDesc": { + "message": "Při zavírání okna zobrazit ikonu v systémové liště." + }, + "enableCloseToMenuBar": { + "message": "Zavřít do panelu nabídek" + }, + "enableCloseToMenuBarDesc": { + "message": "Při zavření okna, zobrazit ikonu v panelu nabídek." + }, + "enableTray": { + "message": "Povolit ikonu v systémové liště" + }, + "enableTrayDesc": { + "message": "Vždy zobrazovat ikonu v systémové liště." + }, + "startToTray": { + "message": "Spustit do systémové lišty" + }, + "startToTrayDesc": { + "message": "Při prvním spuštění aplikace zobrazit pouze ikonu v systémové liště." + }, + "startToMenuBar": { + "message": "Spustit minimalizované v panelu nabídek" + }, + "startToMenuBarDesc": { + "message": "Při prvním spuštění aplikace zobrazit pouze ikonu v panelu nabídek." + }, + "openAtLogin": { + "message": "Spustit automaticky při přihlášení" + }, + "openAtLoginDesc": { + "message": "Při přihlášení automaticky spustit aplikaci Bitwarden." + }, + "alwaysShowDock": { + "message": "Vždy zobrazovat v Docku" + }, + "alwaysShowDockDesc": { + "message": "Zobrazit ikonu Bitwarden v Docku, i když je minimalizován na liště nabídky." + }, + "confirmTrayTitle": { + "message": "Potvrdit zakázání lišty" + }, + "confirmTrayDesc": { + "message": "Zakázáním tohoto nastavení zakážete také všechna ostatní nastavení související s lištami." + }, + "language": { + "message": "Jazyk" + }, + "languageDesc": { + "message": "Změna jazyku používaného aplikací. Je vyžadován restart." + }, + "theme": { + "message": "Motiv" + }, + "themeDesc": { + "message": "Změna barevného motivu aplikace." + }, + "dark": { + "message": "Tmavý", + "description": "Dark color" + }, + "light": { + "message": "Světlý", + "description": "Light color" + }, + "copy": { + "message": "Kopírovat", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Zkontrolovat aktualizace" + }, + "version": { + "message": "Verze $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restartovat pro aktualizaci" + }, + "restartToUpdateDesc": { + "message": "Verze $VERSION_NUM$ je připravena k instalaci. Pro dokončení je ovšem potřeba restartovat aplikaci Bitwarden. Chcete nyní provést restart a aktualizaci?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Aktualizace je dostupná" + }, + "updateAvailableDesc": { + "message": "Byla nalezena aktualizace. Chcete ji nyní stáhnout?" + }, + "restart": { + "message": "Restartovat" + }, + "later": { + "message": "Později" + }, + "noUpdatesAvailable": { + "message": "Nejsou k dispozici žádné aktualizace. Používáte nejnovější verzi." + }, + "updateError": { + "message": "Chyba aktualizace" + }, + "unknown": { + "message": "Neznámá" + }, + "copyUsername": { + "message": "Kopírovat uživatelské jméno" + }, + "copyNumber": { + "message": "Kopírovat číslo", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopírovat bezpečnostní kód", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Prémiové členství" + }, + "premiumManage": { + "message": "Spravovat členství" + }, + "premiumManageAlert": { + "message": "Své členství můžete spravovat na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?" + }, + "premiumRefresh": { + "message": "Obnovit členství" + }, + "premiumNotCurrentMember": { + "message": "Momentálně nejste prémiovým členem." + }, + "premiumSignUpAndGet": { + "message": "Přihlaste se k prémiovému členství a získejte:" + }, + "premiumSignUpStorage": { + "message": "1 GB šifrovaného uložiště pro přílohy." + }, + "premiumSignUpTwoStep": { + "message": "Další možnosti dvoufázového přihlášení, jako je například YubiKey, FIDO U2F a Duo." + }, + "premiumSignUpReports": { + "message": "Reporty o hygieně vašich hesel, zdraví účtu a narušeních bezpečnosti." + }, + "premiumSignUpTotp": { + "message": "Generátor TOTP kódu dvoufázového přihlašování (2FA) pro přihlašovací údaje ve vašem trezoru." + }, + "premiumSignUpSupport": { + "message": "Prioritní zákaznickou podporu." + }, + "premiumSignUpFuture": { + "message": "Všechny budoucí prémiové funkce. Více již brzy!" + }, + "premiumPurchase": { + "message": "Zakoupit prémiové členství" + }, + "premiumPurchaseAlert": { + "message": "Prémiové členství můžete zakoupit na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?" + }, + "premiumCurrentMember": { + "message": "Jste prémiovým členem!" + }, + "premiumCurrentMemberThanks": { + "message": "Děkujeme za podporu Bitwarden." + }, + "premiumPrice": { + "message": "Vše jen za $PRICE$ ročně!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Obnova je dokončena" + }, + "passwordHistory": { + "message": "Historie hesel" + }, + "clear": { + "message": "Vymazat", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Nejsou k dispozici žádná hesla." + }, + "undo": { + "message": "Zpět" + }, + "redo": { + "message": "Znovu" + }, + "cut": { + "message": "Vyjmout", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Vložit", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Vybrat vše" + }, + "zoomIn": { + "message": "Přiblížit" + }, + "zoomOut": { + "message": "Oddálit" + }, + "resetZoom": { + "message": "Obnovit přiblížení" + }, + "toggleFullScreen": { + "message": "Režim celé obrazovky" + }, + "reload": { + "message": "Obnovit" + }, + "toggleDevTools": { + "message": "Nástroje pro vývojáře" + }, + "minimize": { + "message": "Minimalizovat", + "description": "Minimize window" + }, + "zoom": { + "message": "Přiblížení" + }, + "bringAllToFront": { + "message": "Přenést vše do popředí", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "O Bitwarden" + }, + "services": { + "message": "Služby" + }, + "hideBitwarden": { + "message": "Skrýt Bitwarden" + }, + "hideOthers": { + "message": "Skrýt ostatní" + }, + "showAll": { + "message": "Zobrazit vše" + }, + "quitBitwarden": { + "message": "Ukončit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ zkopírováno", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Nápověda" + }, + "window": { + "message": "Okno" + }, + "checkPassword": { + "message": "Zkontrolujte, zda nedošlo k úniku hesla." + }, + "passwordExposed": { + "message": "K úniku tohoto hesla došlo celkem $VALUE$x. Měli byste jej změnit.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": " V žádném ze známých případů nedošlo k úniku tohoto hesla. Mělo by být bezpečné používat jej i nadále." + }, + "baseDomain": { + "message": "Základní doména", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Přesně" + }, + "startsWith": { + "message": "Začíná na" + }, + "regEx": { + "message": "Regulární výraz", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Zjišťování shody", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Výchozí", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Přepnout možnosti" + }, + "organization": { + "message": "Organizace", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Výchozí" + }, + "exit": { + "message": "Ukončit" + }, + "showHide": { + "message": "Zobrazit / skrýt", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Skrýt do systémové lišty" + }, + "alwaysOnTop": { + "message": "Vždy navrchu", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Změněno", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Heslo bylo změněno", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exportovat trezor" + }, + "fileFormat": { + "message": "Formát souboru" + }, + "warning": { + "message": "VAROVÁNÍ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Potvrdit export trezoru" + }, + "exportWarningDesc": { + "message": "Tento export obsahuje data vašeho trezoru v nezašifrovaném formátu. Soubor exportu byste neměli ukládat ani odesílat přes nezabezpečené kanály (např. e-mailem). Odstraňte jej okamžitě po jeho použití." + }, + "encExportKeyWarningDesc": { + "message": "Tento export zašifruje vaše data pomocí šifrovacího klíče vašeho účtu. Pokud někdy změníte šifrovací klíč vašeho účtu, měli by jste vyexportovat data znovu, protože tento exportovaný soubor nebudete moci dešifrovat." + }, + "encExportAccountWarningDesc": { + "message": "Šifrovací klíče účtů jsou jedinečné pro každý Bitwarden uživatelský účet, takže nelze importovat šifrovaný export do jiného účtu." + }, + "noOrganizationsList": { + "message": "Nepatříte do žádné organizace. Organizace umožňují bezpečné sdílení položek s ostatními uživateli." + }, + "noCollectionsInList": { + "message": "Žádné kolekce k zobrazení." + }, + "ownership": { + "message": "Vlastnictví" + }, + "whoOwnsThisItem": { + "message": "Kdo vlastní tuto položku?" + }, + "strong": { + "message": "Silné", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobré", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Slabé", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Slabé hlavní heslo" + }, + "weakMasterPasswordDesc": { + "message": "Hlavní heslo, které jste si vybrali, je slabé. Pro správnou ochranu účtu Bitwarden byste měli použít silné hlavní heslo (nebo heslovou frázi). Opravdu chcete toto heslo použít?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Odemknout pomocí PIN" + }, + "setYourPinCode": { + "message": "Nastavte svůj PIN kód pro odemknutí trezoru. Pokud se zcela odhlásíte z aplikace bude váš současný PIN bude resetován." + }, + "pinRequired": { + "message": "PIN kód je vyžadován." + }, + "invalidPin": { + "message": "Neplatný PIN kód." + }, + "unlockWithWindowsHello": { + "message": "Odemknout pomocí Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Ověřte se pro Bitwarden." + }, + "unlockWithTouchId": { + "message": "Odemknout pomocí Touch ID" + }, + "touchIdConsentMessage": { + "message": "odemknout váš trezor" + }, + "noAutoPromptWindowsHello": { + "message": "Neptat se na Windows Hello při spuštění." + }, + "noAutoPromptTouchId": { + "message": "Neptat se na Touch ID při spuštění." + }, + "lockWithMasterPassOnRestart": { + "message": "Zamknout trezor při restartu pomocí hlavního hesla" + }, + "preferences": { + "message": "Nastavení" + }, + "enableMenuBar": { + "message": "Povolit ikonu panelu nabídek" + }, + "enableMenuBarDesc": { + "message": "Vždy zobrazit ikonu v panelu nabídek." + }, + "hideToMenuBar": { + "message": "Schovat do panelu nabídek" + }, + "selectOneCollection": { + "message": "Musíte vybrat alespoň jednu kolekci." + }, + "premiumUpdated": { + "message": "Povýšili jste na premium." + }, + "restore": { + "message": "Obnovit" + }, + "premiumManageAlertAppStore": { + "message": "Své předplatné můžete spravovat z App Store. Chcete nyní přejít do App Store?" + }, + "legal": { + "message": "Právní předpisy", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Podmínky použití" + }, + "privacyPolicy": { + "message": "Zásady ochrany osobních údajů" + }, + "unsavedChangesConfirmation": { + "message": "Jste si jisti, že chcete odejít? Pokud nyní odejdete, vaše zadané údaje nebudou uloženy." + }, + "unsavedChangesTitle": { + "message": "Neuložené změny" + }, + "clone": { + "message": "Duplikovat" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedna nebo více zásad organizace ovlivňuje nastavení generátoru." + }, + "vaultTimeoutAction": { + "message": "Akce při vypršení časového limitu" + }, + "vaultTimeoutActionLockDesc": { + "message": "Trezor bude uzamčen. Pro opětovný přístup k trezoru bude vyžadováno hlavní heslo." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Budete odhlášeni. Pro opětovný přístup k trezoru bude vyžadováno ověření." + }, + "lock": { + "message": "Zamknout", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Koš", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Hledat v koši" + }, + "permanentlyDeleteItem": { + "message": "Trvale smazat položku" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Opravdu chcete tuto položku trvale smazat?" + }, + "permanentlyDeletedItem": { + "message": "Trvale smazaná položka" + }, + "restoreItem": { + "message": "Obnovit položku" + }, + "restoreItemConfirmation": { + "message": "Opravdu chcete tuto položku obnovit?" + }, + "restoredItem": { + "message": "Obnovená položka" + }, + "permanentlyDelete": { + "message": "Trvale smazat" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Po vypršení časového limitu dojde k odhlášení. Přístup k trezoru bude odebrán a pro opětovné přihlášení bude vyžadováno online ověření. Opravdu chcete použít toto nastavení?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Potvrzení akce při vypršení časového limitu" + }, + "enterpriseSingleSignOn": { + "message": "Jednotné podnikové přihlášení" + }, + "setMasterPassword": { + "message": "Nastavení hlavního hesla" + }, + "ssoCompleteRegistration": { + "message": "Chcete-li dokončit přihlášení pomocí SSO, nastavte prosím hlavní heslo pro přístup a ochranu vašeho trezoru." + }, + "newMasterPass": { + "message": "Nové hlavní heslo" + }, + "confirmNewMasterPass": { + "message": "Potvrďte nové heslo" + }, + "masterPasswordPolicyInEffect": { + "message": "Jedna nebo více zásad organizace vyžaduje, aby hlavní heslo splňovalo následující požadavky:" + }, + "policyInEffectMinComplexity": { + "message": "Minimální skóre složitosti $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimální délka $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Obsahuje jedno nebo více velkých písmen" + }, + "policyInEffectLowercase": { + "message": "Obsahuje jedno nebo více malých písmen" + }, + "policyInEffectNumbers": { + "message": "Obsahuje jednu nebo více číslic" + }, + "policyInEffectSpecial": { + "message": "Obsahuje jeden nebo více následujících speciálních znaků: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Vaše nové hlavní heslo nesplňuje požadavky zásad." + }, + "acceptPolicies": { + "message": "Zaškrtnutím tohoto políčka souhlasím s následujícím:" + }, + "acceptPoliciesError": { + "message": "Podmínky služby a zásady ochrany osobních údajů nebyly uznány." + }, + "enableBrowserIntegration": { + "message": "Povolit integraci prohlížeče" + }, + "enableBrowserIntegrationDesc": { + "message": "Integrace prohlížeče se používá pro biometriku v prohlížeči." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Integrace prohlížeče není podporována" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Integrace prohlížeče je bohužel podporována pouze v Mac App Store verzi." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Integrace prohlížeče není podporována" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Integrace prohlížeče bohužel není ve verzi Windows Store podporována." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Vyžadovat ověření pro integraci prohlížeče" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Povolte další vrstvu zabezpečení vyžadováním ověření frází otisků prstů při vytvoření propojení mezi plochou a prohlížečem. Pokud je povoleno, vyžaduje to zásah uživatele a ověření pokaždé, když je navázáno spojení." + }, + "approve": { + "message": "Schválit" + }, + "verifyBrowserTitle": { + "message": "Ověřit připojení prohlížeče" + }, + "verifyBrowserDesc": { + "message": "Zkontrolujte, zda je zobrazený otisk totožný s otiskem zobrazeným v rozšíření prohlížeče." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrie není povolena" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrické prvky v prohlížeči vyžadují, aby v nastavení počítačové aplikace byla povolena biometrie." + }, + "personalOwnershipSubmitError": { + "message": "Z důvodu zásad organizace nemůžete ukládat položky do svého osobního trezoru. Změňte vlastnictví položky na organizaci a poté si vyberte z dostupných kolekcí." + }, + "hintEqualsPassword": { + "message": "Nápověda k vašemu heslu nemůže být stejná jako vaše heslo." + }, + "personalOwnershipPolicyInEffect": { + "message": "Zásady organizace ovlivňují možnosti vlastnictví." + }, + "allSends": { + "message": "Všechny Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Soubor" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Hledat Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Upravit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Můj trezor" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Datum smazání" + }, + "deletionDateDesc": { + "message": "Tento Send bude trvale smazán v určený datum a čas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Datum expirace" + }, + "expirationDateDesc": { + "message": "Je-li nastaveno, přístup k tomuto Send vyprší v daný datum a čas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximální počet přístupů" + }, + "maxAccessCountDesc": { + "message": "Je-li nastaveno, uživatelé již nebudou mít přístup k tomuto Send, jakmile bude dosaženo maximálního počtu přístupů.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Počet aktuálních přístupů" + }, + "disableSend": { + "message": "Deaktivujte tento Send, aby k němu nikdo neměl přístup.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Volitelně vyžadovat heslo pro přístup k tomuto Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Soukromé poznámky o tomto Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Odkaz tohoto Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Odkaz tohoto Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Při přístupu k tomuto Send, ve výchozím nastavení skrýt text", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send vytvořen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send upraven", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send smazán", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nové heslo" + }, + "whatTypeOfSend": { + "message": "Jakého typu je tento Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Vytvořit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Text, který chcete odeslat." + }, + "sendFileDesc": { + "message": "Soubor, který chcete odeslat." + }, + "days": { + "message": "$DAYS$ dní", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 den" + }, + "custom": { + "message": "Vlastní" + }, + "deleteSendConfirmation": { + "message": "Jste si jisti, že chcete odstranit tento Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Zkopírovat odkaz Send do schránky", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Zkopírovat odkaz tohoto Send do mé schránky při uložení." + }, + "sendDisabled": { + "message": "Send deaktivován", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Kvůli zásadám podniku můžete odstranit pouze existující Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopírovat odkaz" + }, + "disabled": { + "message": "Zakázáno" + }, + "maxAccessCountReached": { + "message": "Dosažen maximální počet přístupů" + }, + "expired": { + "message": "Vypršela platnost" + }, + "pendingDeletion": { + "message": "Čeká na smazání" + }, + "webAuthnAuthenticate": { + "message": "Ověřit WebAuthn" + }, + "hideEmail": { + "message": "Skrýt moji e-mailovou adresu před příjemci." + }, + "sendOptionsPolicyInEffect": { + "message": "Jedna nebo více zásad organizace ovlivňuje nastavení Send." + }, + "emailVerificationRequired": { + "message": "Je vyžadováno ověření emailu" + }, + "emailVerificationRequiredDesc": { + "message": "K použití této funkce je zapotřebí ověření vašeho e-mailu." + }, + "passwordPrompt": { + "message": "Zeptat se znovu na hlavní heslo" + }, + "passwordConfirmation": { + "message": "Potvrzení hlavního hesla" + }, + "passwordConfirmationDesc": { + "message": "Tato akce je chráněna. Chcete-li pokračovat, zadejte znovu vaše hlavní heslo, abychom ověřili vaší totožnost." + }, + "updatedMasterPassword": { + "message": "Hlavní heslo aktualizováno" + }, + "updateMasterPassword": { + "message": "Aktualizovat hlavní heslo" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hodin" + }, + "minutes": { + "message": "Minut" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Přidat účet" + }, + "removeMasterPassword": { + "message": "Odstranit hlavní heslo" + }, + "removedMasterPassword": { + "message": "Hlavní heslo bylo odstraněno." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Opustit organizaci" + }, + "leaveOrganizationConfirmation": { + "message": "Opravdu chcete opustit tuto organizaci?" + }, + "leftOrganization": { + "message": "Opustili jste organizaci." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Nastavení" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Přepnout účet" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json new file mode 100644 index 0000000000..d623d782c7 --- /dev/null +++ b/apps/desktop/src/locales/da/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtre" + }, + "allItems": { + "message": "Alle elementer" + }, + "favorites": { + "message": "Favoritter" + }, + "types": { + "message": "Typer" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sikret notat" + }, + "folders": { + "message": "Mapper" + }, + "collections": { + "message": "Samlinger" + }, + "searchVault": { + "message": "Søg i boks" + }, + "addItem": { + "message": "Tilføj element" + }, + "shared": { + "message": "Delt" + }, + "share": { + "message": "Del" + }, + "moveToOrganization": { + "message": "Flyt til organisation" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flyttet til $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Vælg den organisation, som du vil flytte dette emne til. Flytning overfører ejerskab af emnet til organisationen, og du vil efter flytningen ikke længere være den direkte ejer af emnet." + }, + "attachments": { + "message": "Vedhæftninger" + }, + "viewItem": { + "message": "Vis element" + }, + "name": { + "message": "Navn" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Ny URI" + }, + "username": { + "message": "Brugernavn" + }, + "password": { + "message": "Kodeord" + }, + "passphrase": { + "message": "Adgangssætning" + }, + "editItem": { + "message": "Redigér element" + }, + "emailAddress": { + "message": "E-mailadresse" + }, + "verificationCodeTotp": { + "message": "Verifikationskode (TOTP)" + }, + "website": { + "message": "Hjemmeside" + }, + "notes": { + "message": "Notater" + }, + "customFields": { + "message": "Brugerdefinerede felter" + }, + "launch": { + "message": "Kør" + }, + "copyValue": { + "message": "Kopiér værdi", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimér, når du kopierer til udklipsholder" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimér, når du kopierer et elements data til udklipsholderen." + }, + "toggleVisibility": { + "message": "Slå synlighed til/fra" + }, + "toggleCollapse": { + "message": "Fold sammen/fold ud", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kortindehaverens navn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Mærke" + }, + "expiration": { + "message": "Udløb" + }, + "securityCode": { + "message": "Sikkerhedskode" + }, + "identityName": { + "message": "Identitetsnavn" + }, + "company": { + "message": "Virksomhed" + }, + "ssn": { + "message": "CPR-nummer" + }, + "passportNumber": { + "message": "Pasnummer" + }, + "licenseNumber": { + "message": "Kørekortnummer" + }, + "email": { + "message": "E-mail" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresse" + }, + "premiumRequired": { + "message": "Premium kræves" + }, + "premiumRequiredDesc": { + "message": "Premium-medlemskab kræves for at anvende denne funktion." + }, + "errorOccurred": { + "message": "En fejl er opstået." + }, + "error": { + "message": "Fejl" + }, + "january": { + "message": "Januar" + }, + "february": { + "message": "Februar" + }, + "march": { + "message": "Marts" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Maj" + }, + "june": { + "message": "Juni" + }, + "july": { + "message": "Juli" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "eks.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Hr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Frøken" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Udløbsmåned" + }, + "expirationYear": { + "message": "Udløbsår" + }, + "select": { + "message": "Vælg" + }, + "other": { + "message": "Andet" + }, + "generatePassword": { + "message": "Generér adgangskode" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "Fornavn" + }, + "middleName": { + "message": "Mellemnavn" + }, + "lastName": { + "message": "Efternavn" + }, + "fullName": { + "message": "Fulde navn" + }, + "address1": { + "message": "Adresse 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "By" + }, + "stateProvince": { + "message": "Region" + }, + "zipPostalCode": { + "message": "Postnummer" + }, + "country": { + "message": "Land" + }, + "save": { + "message": "Gem" + }, + "cancel": { + "message": "Annullér" + }, + "delete": { + "message": "Slet" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Redigér" + }, + "authenticatorKeyTotp": { + "message": "Autentificeringsnøgle (TOTP)" + }, + "folder": { + "message": "Mappe" + }, + "newCustomField": { + "message": "Nyt brugerdefineret felt" + }, + "value": { + "message": "Værdi" + }, + "dragToSort": { + "message": "Træk for at sortere" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Skjult" + }, + "cfTypeBoolean": { + "message": "Boolsk" + }, + "cfTypeLinked": { + "message": "Forbundet", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Forbundet værdi", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Fjern" + }, + "nameRequired": { + "message": "Navn er påkrævet." + }, + "addedItem": { + "message": "Tilføjede element" + }, + "editedItem": { + "message": "Redigerede element" + }, + "deleteItem": { + "message": "Slet element" + }, + "deleteFolder": { + "message": "Slet mappe" + }, + "deleteAttachment": { + "message": "Slet vedhæftning" + }, + "deleteItemConfirmation": { + "message": "Er du sikker på, at du sende til papirkurven?" + }, + "deletedItem": { + "message": "Element sendt til papirkurven" + }, + "overwritePasswordConfirmation": { + "message": "Er du sikker på, at du vil overskrive den aktuelle adgangskode?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Tilføj mappe" + }, + "editFolder": { + "message": "Redigér mappe" + }, + "regeneratePassword": { + "message": "Regenerér adgangskode" + }, + "copyPassword": { + "message": "Kopiér kodeord" + }, + "copyUri": { + "message": "Kopiér URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopiér bekræftelseskode (TOTP)" + }, + "length": { + "message": "Længde" + }, + "numWords": { + "message": "Antal ord" + }, + "wordSeparator": { + "message": "Ordseparator" + }, + "capitalize": { + "message": "Stort begyndelsesbogstav", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkludér ciffer" + }, + "close": { + "message": "Luk" + }, + "minNumbers": { + "message": "Mindste antal cifre" + }, + "minSpecial": { + "message": "Mindste antal specialtegn", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Undgå tvetydige tegn" + }, + "searchCollection": { + "message": "Søg i samling" + }, + "searchFolder": { + "message": "Søg i mappe" + }, + "searchFavorites": { + "message": "Søg i favoritter" + }, + "searchType": { + "message": "Søg type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Tilføj ny vedhæftning" + }, + "deletedAttachment": { + "message": "Slettet vedhæftning" + }, + "deleteAttachmentConfirmation": { + "message": "Er du sikker på du vil slette denne vedhæftning?" + }, + "attachmentSaved": { + "message": "Den vedhæftede fil er blevet gemt." + }, + "file": { + "message": "Fil" + }, + "selectFile": { + "message": "Vælg en fil." + }, + "maxFileSize": { + "message": "Maksimum filstørrelse er 500 MB." + }, + "updateKey": { + "message": "Du kan ikke bruge denne funktion, før du opdaterer din krypteringsnøgle." + }, + "editedFolder": { + "message": "Redigerede mappe" + }, + "addedFolder": { + "message": "Tilføjede mappe" + }, + "deleteFolderConfirmation": { + "message": "Er du sikker på du vil slette denne mappe?" + }, + "deletedFolder": { + "message": "Slettede mappe" + }, + "loginOrCreateNewAccount": { + "message": "Log ind eller opret en ny konto for at få adgang til din sikre boks." + }, + "createAccount": { + "message": "Opret konto" + }, + "logIn": { + "message": "Log ind" + }, + "submit": { + "message": "Indsend" + }, + "masterPass": { + "message": "Hovedadgangskode" + }, + "masterPassDesc": { + "message": "Hovedadgangskoden er den adgangskode, du bruger til at få adgang til din boks. Det er meget vigtigt, at du ikke glemmer din hovedadgangskode. Der er ingen måde hvorpå koden kan genoprettes, i tilfælde af at du glemmer den." + }, + "masterPassHintDesc": { + "message": "Et tip til hovedadgangskoden kan hjælpe dig med at huske din adgangskode, hvis du glemmer den." + }, + "reTypeMasterPass": { + "message": "Gentast hovedadgangskode" + }, + "masterPassHint": { + "message": "Hovedadgangskodetip (valgfri)" + }, + "settings": { + "message": "Indstillinger" + }, + "passwordHint": { + "message": "Adgangskodetip" + }, + "enterEmailToGetHint": { + "message": "Indtast din kontos e-mailadresse for at modtage dit hovedadgangskodetip." + }, + "getMasterPasswordHint": { + "message": "Få hovedadgangskodetip" + }, + "emailRequired": { + "message": "E-mailadresse er påkrævet." + }, + "invalidEmail": { + "message": "Ugyldig e-mailadresse." + }, + "masterPassRequired": { + "message": "Hovedadgangskode er påkrævet." + }, + "masterPassLength": { + "message": "Hovedadgangskoden skal være på mindst 8 tegn." + }, + "masterPassDoesntMatch": { + "message": "De to adgangskoder matcher ikke." + }, + "newAccountCreated": { + "message": "Din nye konto er oprettet! Du kan nu logge ind." + }, + "masterPassSent": { + "message": "Vi har sendt dig en e-mail med dit hovedadgangskodetip." + }, + "unexpectedError": { + "message": "Der opstod en uventet fejl." + }, + "itemInformation": { + "message": "Elementinformation" + }, + "noItemsInList": { + "message": "Der er ingen elementer at vise." + }, + "sendVerificationCode": { + "message": "Send en bekræftelseskode til din e-mail" + }, + "sendCode": { + "message": "Send kode" + }, + "codeSent": { + "message": "Kode sendt" + }, + "verificationCode": { + "message": "Bekræftelseskode" + }, + "confirmIdentity": { + "message": "Bekræft din identitet for at fortsætte." + }, + "verificationCodeRequired": { + "message": "Bekræftelseskode er påkrævet." + }, + "invalidVerificationCode": { + "message": "Ugyldig bekræftelseskode" + }, + "continue": { + "message": "Fortsæt" + }, + "enterVerificationCodeApp": { + "message": "Indtast den 6-cifrede verifikationskode fra din autentificeringsapp." + }, + "enterVerificationCodeEmail": { + "message": "Indtast den 6-cifrede verifikationskode, der blev sendt til $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Bekræftelses-email sendt til $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Husk mig" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verifikationskode-email igen" + }, + "useAnotherTwoStepMethod": { + "message": "Brug en anden to-trins-loginmetode" + }, + "insertYubiKey": { + "message": "Indsæt din YubiKey i din computers USB-port og tryk derefter på dens knap." + }, + "insertU2f": { + "message": "Indsæt din sikkerhedsnøgle i din computers USB-port. Hvis den har en knap, tryk på den." + }, + "recoveryCodeDesc": { + "message": "Mistet adgang til alle dine to-faktor-udbydere? Brug din genoprettelseskode til at deaktivere alle to-faktor udbydere på din konto." + }, + "recoveryCodeTitle": { + "message": "Gendannelseskode" + }, + "authenticatorAppTitle": { + "message": "Autentificeringsapp" + }, + "authenticatorAppDesc": { + "message": "Brug en autentificeringsapp (f.eks. Authy eller Google Autentificering) til at generere tidsbaserede bekræftelseskoder.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP sikkerhedsnøgle" + }, + "yubiKeyDesc": { + "message": "Brug en YubiKey til at få adgang til din konto. Virker med YubiKey 4, 4 Nano, 4C og NEO enheder." + }, + "duoDesc": { + "message": "Bekræft med Duo sikkerhed ved hjælp af Duo Mobile app, SMS, telefonopkald eller U2F sikkerhedsnøgle.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Bekræft med Duo Security for din organisation ved hjælp af Duo Mobile app, SMS, telefonopkald eller U2F-sikkerhedsnøgle.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Brug en hvilken som helst WebAuthn-aktiveret sikkerhedsnøgle til at få adgang til din konto." + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Bekræftelseskoder vil blive e-mailet til dig." + }, + "loginUnavailable": { + "message": "Login utilgængelig" + }, + "noTwoStepProviders": { + "message": "Denne konto har to-trins login aktiveret, men ingen af de konfigurerede to-trinsudbydere understøttes af denne enhed." + }, + "noTwoStepProviders2": { + "message": "Tilføj venligst yderligere udbydere, der understøttes bedre på tværs af enheder (såsom en autentificeringsapp)." + }, + "twoStepOptions": { + "message": "To-trins-login indstillinger" + }, + "selfHostedEnvironment": { + "message": "Selv-hostet miljø" + }, + "selfHostedEnvironmentFooter": { + "message": "Angiv grund-URL'en i din lokal-hostede Bitwarden-installation." + }, + "customEnvironment": { + "message": "Brugerdefineret miljø" + }, + "customEnvironmentFooter": { + "message": "Til avancerede brugere. Du kan angive grund URL'en for hver tjeneste uafhængigt." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API server URL" + }, + "webVaultUrl": { + "message": "Web-boks server URL" + }, + "identityUrl": { + "message": "Identitetsserver URL" + }, + "notificationsUrl": { + "message": "Meddelelsesserver URL" + }, + "iconsUrl": { + "message": "Ikonserver URL" + }, + "environmentSaved": { + "message": "Miljøets URLs er blevet gemt." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nej" + }, + "overwritePassword": { + "message": "Overskriv adgangskode" + }, + "learnMore": { + "message": "Lær mere" + }, + "featureUnavailable": { + "message": "Funktion utilgængelig" + }, + "loggedOut": { + "message": "Logget ud" + }, + "loginExpired": { + "message": "Din login-session er udløbet." + }, + "logOutConfirmation": { + "message": "Er du sikker på, at du vil logge ud?" + }, + "logOut": { + "message": "Log ud" + }, + "addNewLogin": { + "message": "Tilføj nyt login" + }, + "addNewItem": { + "message": "Tilføj nyt element" + }, + "addNewFolder": { + "message": "Tilføj ny mappe" + }, + "view": { + "message": "Vis" + }, + "account": { + "message": "Konto" + }, + "loading": { + "message": "Indlæser..." + }, + "lockVault": { + "message": "Lås boks" + }, + "passwordGenerator": { + "message": "Adgangskodegenerator" + }, + "contactUs": { + "message": "Kontakt os" + }, + "getHelp": { + "message": "Få hjælp" + }, + "fileBugReport": { + "message": "Indsend en fejlrapport" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Følg os" + }, + "syncVault": { + "message": "Synkronisér boks" + }, + "changeMasterPass": { + "message": "Skift hovedadgangskode" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kan ændre din hovedadgangskode i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" + }, + "fingerprintPhrase": { + "message": "Fingeraftrykssætning", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Din kontos fingeraftrykssætning", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Gå til web-boks" + }, + "getMobileApp": { + "message": "Hent mobilapp" + }, + "getBrowserExtension": { + "message": "Hent browserudvidelse" + }, + "syncingComplete": { + "message": "Synkronisering fuldført" + }, + "syncingFailed": { + "message": "Synkronisering mislykkedes" + }, + "yourVaultIsLocked": { + "message": "Din boks er låst. Bekræft din identitet for at fortsætte." + }, + "unlock": { + "message": "Lås op" + }, + "loggedInAsOn": { + "message": "Logget ind som $EMAIL$ på $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ugyldig hovedadgangskode" + }, + "twoStepLoginConfirmation": { + "message": "To-trins login gør din konto mere sikker ved at kræve, at du verificerer dit login med en anden enhed, med en sikkerhedsnøgle, autentificerings app, SMS, telefonopkald eller e-mail. To-trins login kan aktiveres i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" + }, + "twoStepLogin": { + "message": "To-trins login" + }, + "vaultTimeout": { + "message": "Boks timeout" + }, + "vaultTimeoutDesc": { + "message": "Vælg timeout for din boks, hvorefter den vil udføre den valgte handling." + }, + "immediately": { + "message": "Straks" + }, + "tenSeconds": { + "message": "10 sekunder" + }, + "twentySeconds": { + "message": "20 sekunder" + }, + "thirtySeconds": { + "message": "30 sekunder" + }, + "oneMinute": { + "message": "1 minut" + }, + "twoMinutes": { + "message": "2 minutter" + }, + "fiveMinutes": { + "message": "5 minutter" + }, + "fifteenMinutes": { + "message": "15 minutter" + }, + "thirtyMinutes": { + "message": "30 minutter" + }, + "oneHour": { + "message": "1 time" + }, + "fourHours": { + "message": "4 timer" + }, + "onIdle": { + "message": "Når systemet er inaktivt" + }, + "onSleep": { + "message": "Når systemet sover" + }, + "onLocked": { + "message": "Når systemet låses" + }, + "onRestart": { + "message": "Ved genstart" + }, + "never": { + "message": "Aldrig" + }, + "security": { + "message": "Sikkerhed" + }, + "clearClipboard": { + "message": "Ryd udklipsholder", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Fjern automatisk kopierede data fra din udklipsholder.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Slå webikoner fra" + }, + "disableFaviconDesc": { + "message": "Webikoner vises som et genkendeligt billede ved siden af hvert loginelement i din boks." + }, + "enableMinToTray": { + "message": "Minimer til bakkeikon" + }, + "enableMinToTrayDesc": { + "message": "Når vinduet minimeres, vis i stedet et ikon i meddelelsesområdet." + }, + "enableMinToMenuBar": { + "message": "Minimér til menulinjen" + }, + "enableMinToMenuBarDesc": { + "message": "Når vinduet minimeres, vis i stedet et ikon på menulinjen." + }, + "enableCloseToTray": { + "message": "Luk til ikon i meddelelsesområdet" + }, + "enableCloseToTrayDesc": { + "message": "Når vinduet lukkes, vis i stedet et ikon i meddelelsesområdet." + }, + "enableCloseToMenuBar": { + "message": "Luk til menulinjen" + }, + "enableCloseToMenuBarDesc": { + "message": "Når vinduet lukkes, vis i stedet et ikon på menulinjen." + }, + "enableTray": { + "message": "Aktivér bakkeikon" + }, + "enableTrayDesc": { + "message": "Vis altid et ikon i meddelelsesområdet." + }, + "startToTray": { + "message": "Start som ikon i meddelelsesområdet" + }, + "startToTrayDesc": { + "message": "Når applikationen startes første gang, skal der kun vises et ikon i meddelelsesområdet." + }, + "startToMenuBar": { + "message": "Start på menulinjen" + }, + "startToMenuBarDesc": { + "message": "Når applikationen startes første gang, skal der kun vises et ikon på menulinjen." + }, + "openAtLogin": { + "message": "Start automatisk ved login" + }, + "openAtLoginDesc": { + "message": "Start Bitwarden skrivebordsapplikationen automatisk ved login." + }, + "alwaysShowDock": { + "message": "Vis altid i Dock" + }, + "alwaysShowDockDesc": { + "message": "Vis Bitwarden-ikonet i Dock, selv når det er minimeret til menulinjen." + }, + "confirmTrayTitle": { + "message": "Bekræft deaktivering af bakke" + }, + "confirmTrayDesc": { + "message": "Deaktivering af denne indstilling vil også deaktivere alle andre indstillinger relateret til bakken." + }, + "language": { + "message": "Sprog" + }, + "languageDesc": { + "message": "Skift det sprog, der bruges af applikationen. Genstart er påkrævet." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Skift applikationens farvetema." + }, + "dark": { + "message": "Mørk", + "description": "Dark color" + }, + "light": { + "message": "Lys", + "description": "Light color" + }, + "copy": { + "message": "Kopiér", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Søg efter opdateringer" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Genstart for at opdatere" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ er klar til at installere. Du skal genstarte applikationen for at færdiggøre installationen. Vil du genstarte og opdatere nu?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Opdatering tilgængelig" + }, + "updateAvailableDesc": { + "message": "En opdatering blev fundet. Vil du hente den nu?" + }, + "restart": { + "message": "Genstart" + }, + "later": { + "message": "Senere" + }, + "noUpdatesAvailable": { + "message": "Ingen opdateringer er tilgængelige i øjeblikket. Du anvender den nyeste version." + }, + "updateError": { + "message": "Opdateringsfejl" + }, + "unknown": { + "message": "Ukendt" + }, + "copyUsername": { + "message": "Kopiér brugernavn" + }, + "copyNumber": { + "message": "Kopiér nummer", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiér kortverifikationskode", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium-medlemskab" + }, + "premiumManage": { + "message": "Håndtér medlemsskab" + }, + "premiumManageAlert": { + "message": "Du kan håndtere dit medlemskab i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" + }, + "premiumRefresh": { + "message": "Opdatér medlemskab" + }, + "premiumNotCurrentMember": { + "message": "Du er i øjeblikket ikke premium-medlem." + }, + "premiumSignUpAndGet": { + "message": "Tilmeld dig et premium medlemskab og få:" + }, + "premiumSignUpStorage": { + "message": "1 GB krypteret lager til vedhæftede filer." + }, + "premiumSignUpTwoStep": { + "message": "Yderligere to-trins-loginmuligheder såsom YubiKey, FIDO U2F og Duo." + }, + "premiumSignUpReports": { + "message": "Adgangskodehygiejne, kontosundhed og rapporter om datalæk til at holde din boks sikker." + }, + "premiumSignUpTotp": { + "message": "TOTP verifikationskode (2FA) generator til logins i din boks." + }, + "premiumSignUpSupport": { + "message": "Prioriteret kundeservice." + }, + "premiumSignUpFuture": { + "message": "Alle fremtidige premium-funktioner. Mere kommer snart!" + }, + "premiumPurchase": { + "message": "Køb premium" + }, + "premiumPurchaseAlert": { + "message": "Du kan købe premium-medlemskab i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" + }, + "premiumCurrentMember": { + "message": "Du er premium-medlem!" + }, + "premiumCurrentMemberThanks": { + "message": "Tak fordi du støtter Bitwarden." + }, + "premiumPrice": { + "message": "Alt dette for kun $PRICE$ /år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Opdatering færdig" + }, + "passwordHistory": { + "message": "Adgangskodehistorik" + }, + "clear": { + "message": "Ryd", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Der er ingen kodeord at vise." + }, + "undo": { + "message": "Fortryd" + }, + "redo": { + "message": "Annullér fortryd" + }, + "cut": { + "message": "Klip", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Indsæt", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Markér alt" + }, + "zoomIn": { + "message": "Zoom ind" + }, + "zoomOut": { + "message": "Zoom ud" + }, + "resetZoom": { + "message": "Nulstil zoom" + }, + "toggleFullScreen": { + "message": "Aktivér/deaktivér fuld skærm" + }, + "reload": { + "message": "Genindlæs" + }, + "toggleDevTools": { + "message": "Udviklingsværktøjer til/fra" + }, + "minimize": { + "message": "Minimér", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Placér alle forrest", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Om Bitwarden" + }, + "services": { + "message": "Tjenester" + }, + "hideBitwarden": { + "message": "Skjul Bitwarden" + }, + "hideOthers": { + "message": "Skjul øvrige" + }, + "showAll": { + "message": "Vis alle" + }, + "quitBitwarden": { + "message": "Afslut Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ kopieret", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Hjælp" + }, + "window": { + "message": "Vindue" + }, + "checkPassword": { + "message": "Undersøg om adgangskoden er blevet afsløret." + }, + "passwordExposed": { + "message": "Denne adgangskode er blevet afsløret $VALUE$ gang(e) i datalæk. Du burde skifte den.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Denne adgangskode er ikke fundet i nogen kendte datalæk. Den burde være sikker at bruge." + }, + "baseDomain": { + "message": "Grund-domæne", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Vært", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Nøjagtig" + }, + "startsWith": { + "message": "Begynder med" + }, + "regEx": { + "message": "Regulært udtryk", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Matchmetode", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standard matchmetode", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Skift indstillinger" + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Standard" + }, + "exit": { + "message": "Afslut" + }, + "showHide": { + "message": "Vis / skjul", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Skjul til bakke" + }, + "alwaysOnTop": { + "message": "Altid øverst", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Opdateret", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Adgangskode opdateret", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Eksportér boks" + }, + "fileFormat": { + "message": "Filformat" + }, + "warning": { + "message": "ADVARSEL", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Bekræft eksport af boks" + }, + "exportWarningDesc": { + "message": "Denne eksport indeholder dine boksdata i ukrypteret form. Du bør ikke gemme eller sende den eksporterede fil over usikre kanaler (f.eks. e-mail). Slet den straks efter at du er færdig med at bruge den." + }, + "encExportKeyWarningDesc": { + "message": "Denne eksport krypterer dine data vha. din kontos krypteringsnøgle. Roterer du på et tidspunkt denne kontokrypteringsnøgle, skal du eksportere igen, da du ikke vil kunne dekryptere denne eksportfil." + }, + "encExportAccountWarningDesc": { + "message": "Kontokrypteringsnøgler er unikke for hver Bitwarden-brugerkonto, så du kan ikke importere en krypteret eksport til en anden konto." + }, + "noOrganizationsList": { + "message": "Du tilhører ikke nogen organisationer. Organisationer giver dig mulighed for at dele elementer med andre brugere på en sikker måde." + }, + "noCollectionsInList": { + "message": "Der er ingen samlinger at vise." + }, + "ownership": { + "message": "Ejerskab" + }, + "whoOwnsThisItem": { + "message": "Hvem ejer dette element?" + }, + "strong": { + "message": "Stærk", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "God", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Svag", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Svag hovedadgangskode" + }, + "weakMasterPasswordDesc": { + "message": "Hovedadgangskoden du har valgt er svag. Du skal bruge en stærk hovedadgangskode (eller en adgangssætning) for at beskytte din Bitwarden-konto korrekt. Er du sikker på, at du vil bruge denne hovedadgangskode?" + }, + "pin": { + "message": "Pinkode", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Lås op med pinkode" + }, + "setYourPinCode": { + "message": "Indstil din pinkode til at låse Bitwarden op. Dine pin-indstillinger nulstilles, hvis du nogensinde logger helt ud af programmet." + }, + "pinRequired": { + "message": "Pinkode er påkrævet." + }, + "invalidPin": { + "message": "Ugyldig pinkode." + }, + "unlockWithWindowsHello": { + "message": "Lås op med Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Bekræft for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Lås op med Touch ID" + }, + "touchIdConsentMessage": { + "message": "lås din boks op" + }, + "noAutoPromptWindowsHello": { + "message": "Bed ikke om Windows Hello ved start." + }, + "noAutoPromptTouchId": { + "message": "Bed ikke om Touch ID ved start." + }, + "lockWithMasterPassOnRestart": { + "message": "Lås med hovedadgangskode ved genstart" + }, + "preferences": { + "message": "Indstillinger" + }, + "enableMenuBar": { + "message": "Aktivér menulinjeikon" + }, + "enableMenuBarDesc": { + "message": "Vis altid et ikon på menulinjen." + }, + "hideToMenuBar": { + "message": "Skjul på menulinjen" + }, + "selectOneCollection": { + "message": "Du skal vælge minimum én samling." + }, + "premiumUpdated": { + "message": "Du har opgraderet til premium." + }, + "restore": { + "message": "Gendan" + }, + "premiumManageAlertAppStore": { + "message": "Du kan administrere dit abonnement fra app butikken. Vil du besøge app butikken nu?" + }, + "legal": { + "message": "Juridisk", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Servicevilkår" + }, + "privacyPolicy": { + "message": "Fortrolighedspolitik" + }, + "unsavedChangesConfirmation": { + "message": "Er du sikker på, at du vil lukke? Hvis du lukker nu, gemmes dine nuværende oplysninger ikke." + }, + "unsavedChangesTitle": { + "message": "Ikke-gemte ændringer" + }, + "clone": { + "message": "Klon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Én eller flere organisationspolitikker påvirker dine generatorindstillinger." + }, + "vaultTimeoutAction": { + "message": "Boks timeout-handling" + }, + "vaultTimeoutActionLockDesc": { + "message": "En låst boks kræver at du gentaster din hovedadgangskode for at tilgå den igen." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "En boks der er logget ud kræver, at du godkender igen for at få adgang til den." + }, + "lock": { + "message": "Lås", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Papirkurv", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Søg i papirkurven" + }, + "permanentlyDeleteItem": { + "message": "Slet element permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Er du sikker på, at du vil slette dette element permanent?" + }, + "permanentlyDeletedItem": { + "message": "Element slettet permanent" + }, + "restoreItem": { + "message": "Gendan element" + }, + "restoreItemConfirmation": { + "message": "Er du sikker på, at du vil gendanne dette element?" + }, + "restoredItem": { + "message": "Element gendannet" + }, + "permanentlyDelete": { + "message": "Slette permanent" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Ved at logge ud fjernes al adgang til din boks og kræver online-godkendelse efter timeout-perioden. Er du sikker på, at du vil bruge denne indstilling?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bekræft timeout-handling" + }, + "enterpriseSingleSignOn": { + "message": "Virksomheds Single Sign On" + }, + "setMasterPassword": { + "message": "Indstil hovedadgangskode" + }, + "ssoCompleteRegistration": { + "message": "For at fuldføre indlogning vha. SSO skal en hovedadgangskode opsættes for at tilgå og beskytte din boks." + }, + "newMasterPass": { + "message": "Ny hovedadgangskode" + }, + "confirmNewMasterPass": { + "message": "Bekræft ny hovedadgangskode" + }, + "masterPasswordPolicyInEffect": { + "message": "Én eller flere organisationspolitikker kræver, at din hovedadgangskode opfylder flg. krav:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum kompleksitetsscore på $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimumslængde på $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Indeholder ét eller flere store bogstaver" + }, + "policyInEffectLowercase": { + "message": "Indeholder ét eller flere små bogstaver" + }, + "policyInEffectNumbers": { + "message": "Indeholder ét eller flere cifre" + }, + "policyInEffectSpecial": { + "message": "Indeholder ét eller flere af følgende specialtegn $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Din nye hovedadgangskode opfylder ikke politikkravene." + }, + "acceptPolicies": { + "message": "Ved at markere dette felt accepterer du følgende:" + }, + "acceptPoliciesError": { + "message": "Servicevilkår og fortrolighedspolitik er ikke blevet bekræftet." + }, + "enableBrowserIntegration": { + "message": "Aktiver browserintegration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browserintegration bruges til biometri i browseren." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browserintegration understøttes ikke" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Desværre understøttes browserintegration kun i Mac App Store-versionen indtil videre." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browserintegration understøttes ikke" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Desværre understøttes browserintegration i øjeblikket ikke i Windows Store-versionen." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Kræv verifikation for browserintegration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Aktivér et ekstra sikkerhedslag ved at kræve validering af fingeraftrykssætning, når du opretter en forbindelse mellem dit skrivebord og din browser. Når det er aktiveret, kræver dette brugerintervention og verifikation hver gang en forbindelse oprettes." + }, + "approve": { + "message": "Godkend" + }, + "verifyBrowserTitle": { + "message": "Verificér browserforbindelse" + }, + "verifyBrowserDesc": { + "message": "Sørg for, at det viste fingeraftryk er identisk med det fingeraftryk, der vises i browserudvidelsen." + }, + "biometricsNotEnabledTitle": { + "message": "Biometri ikke aktiveret" + }, + "biometricsNotEnabledDesc": { + "message": "Browserbiometri kræver, at desktop-biometri er aktiveret i indstillingerne først." + }, + "personalOwnershipSubmitError": { + "message": "På grund af en virksomhedspolitik er du begrænset til at gemme elementer i din personlige boks. Skift ejerskabsindstillingen til en organisation, og vælg blandt de tilgængelige samlinger." + }, + "hintEqualsPassword": { + "message": "Dit adgangskodetip kan ikke være det samme som din adgangskode." + }, + "personalOwnershipPolicyInEffect": { + "message": "En organisationspolitik påvirker dine ejerskabsmuligheder." + }, + "allSends": { + "message": "Alle Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fil" + }, + "sendTypeText": { + "message": "Tekst" + }, + "searchSends": { + "message": "Søg i Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Redigér Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Min boks" + }, + "text": { + "message": "Tekst" + }, + "deletionDate": { + "message": "Sletningsdato" + }, + "deletionDateDesc": { + "message": "Send'en slettes permanent på den angivne dato og tid.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Udløbsdato" + }, + "expirationDateDesc": { + "message": "Hvis angivet, vil adgangen til denne Send udløbe på den angivne dato og tidspunkt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimalt antal tilgange" + }, + "maxAccessCountDesc": { + "message": "Hvis opsat, vil brugere ikke længere kunne tilgå denne Send, når det maksimale adgangsantal er nået.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Aktuelt antal tilgange" + }, + "disableSend": { + "message": "Deaktivér denne Send, så ingen kan tilgå den.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Valgfrit brugeradgangskodekrav for at tilgå denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notater om denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Når Send tilgås, skjul som standard teksten", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send oprettet", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send opdateret", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send slettet", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nyt kodeord" + }, + "whatTypeOfSend": { + "message": "Hvilken type Send er dette?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Opret Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Den tekst, du vil sende." + }, + "sendFileDesc": { + "message": "Den fil, du vil sende." + }, + "days": { + "message": "$DAYS$ dage", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dag" + }, + "custom": { + "message": "Tilpasset" + }, + "deleteSendConfirmation": { + "message": "Er du sikker på, at du vil slette denne Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopiér Send link til udklipsholder", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopier linket for at dele denne Send til min udklipsholder ved gem." + }, + "sendDisabled": { + "message": "Send deaktiveret", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Du kan grundet en virksomhedspolitik kun slette en eksisterende Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopiér link" + }, + "disabled": { + "message": "Deaktiveret" + }, + "maxAccessCountReached": { + "message": "Maksimalt adgangsantal nået" + }, + "expired": { + "message": "Udløbet" + }, + "pendingDeletion": { + "message": "Afventer sletning" + }, + "webAuthnAuthenticate": { + "message": "Godkend WebAuthn" + }, + "hideEmail": { + "message": "Skjul min e-mailadresse for modtagere." + }, + "sendOptionsPolicyInEffect": { + "message": "Én eller flere organisationspolitikker påvirker dine Send-valgmuligheder." + }, + "emailVerificationRequired": { + "message": "E-mailbekræftelse kræves" + }, + "emailVerificationRequiredDesc": { + "message": "Du skal bekræfte din mailadresse for at bruge denne funktion." + }, + "passwordPrompt": { + "message": "Genanmodning om hovedadgangskode" + }, + "passwordConfirmation": { + "message": "Bekræftelse af hovedadgangskode" + }, + "passwordConfirmationDesc": { + "message": "Denne handling er beskyttet. For at fortsætte, indtast venligst din hovedadgangskode igen for at bekræfte din identitet." + }, + "updatedMasterPassword": { + "message": "Hovedadgangskode opdateret" + }, + "updateMasterPassword": { + "message": "Opdatér hovedadgangskode" + }, + "updateMasterPasswordWarning": { + "message": "Dit hovedadgangskode blev for nylig ændret af en administrator i din organisation. For at få adgang til boksen skal du opdatere din hovedadgangskode nu. Hvis du fortsætter, logges du ud af din nuværende session, hvilket kræver, at du logger ind igen. Aktive sessioner på andre enheder kan fortsætte med at være aktive i op til én time." + }, + "hours": { + "message": "Timer" + }, + "minutes": { + "message": "Minutter" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Din organisations politikker påvirker din boks-timeout. Maksimalt tilladt boks-timeout er $HOURS$ time(r) og $MINUTES$ minut(ter)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Din boks-timeout overskrider de begrænsninger, der er fastsat af din organisation." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Auto-indrullering" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Denne organisation har en virksomhedspolitik, der automatisk tilmelder dig til nulstilling af adgangskode. Tilmelding giver organisationsadministratorer mulighed for at skifte din hovedadgangskode." + }, + "vaultExportDisabled": { + "message": "Bokseksport deaktiveret" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flere organisationspolitikker forhindrer dig i at eksportere din personlige boks." + }, + "addAccount": { + "message": "Tilføj konto" + }, + "removeMasterPassword": { + "message": "Fjern hovedadgangskode" + }, + "removedMasterPassword": { + "message": "Hovedadgangskode fjernet." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ bruger SSO med en selv-hostet nøgleserver. En hovedadgangskode er ikke længere påkrævet for at logge ind for medlemmer af denne organisation.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Forlad organisation" + }, + "leaveOrganizationConfirmation": { + "message": "Er du sikker på, at du vil forlade denne organisation?" + }, + "leftOrganization": { + "message": "Du har forladt organisationen." + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan ikke kontakte key connector, forsøg igen senere." + }, + "lockAllVaults": { + "message": "Lås alle bokse" + }, + "accountLimitReached": { + "message": "Der må ikke være logget på mere end 5 konti på samme tid." + }, + "accountPreferences": { + "message": "Indstillinger" + }, + "appPreferences": { + "message": "Appindstillinger (alle konti)" + }, + "accountSwitcherLimitReached": { + "message": "Kontogrænsen er nået. Log ud af en konto for at tilføje en anden." + }, + "settingsTitle": { + "message": "Appindstillinger for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Skift konto" + }, + "options": { + "message": "Indstillinger" + }, + "sessionTimeout": { + "message": "Din session er udløbet. Gå tilbage og prøv at logge ind igen." + }, + "exportingPersonalVaultTitle": { + "message": "Eksporterer personlig boks" + }, + "exportingPersonalVaultDescription": { + "message": "Kun de personlige bokselementer tilknyttet $EMAIL$ eksporteres. Organisationsbokseelementer medtages ikke.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json new file mode 100644 index 0000000000..9be83ce5ba --- /dev/null +++ b/apps/desktop/src/locales/de/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filter" + }, + "allItems": { + "message": "Alle Einträge" + }, + "favorites": { + "message": "Favoriten" + }, + "types": { + "message": "Typen" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Karte" + }, + "typeIdentity": { + "message": "Identität" + }, + "typeSecureNote": { + "message": "Sichere Notiz" + }, + "folders": { + "message": "Ordner" + }, + "collections": { + "message": "Sammlungen" + }, + "searchVault": { + "message": "Tresor durchsuchen" + }, + "addItem": { + "message": "Neuer Eintrag" + }, + "shared": { + "message": "Freigegeben" + }, + "share": { + "message": "Teilen" + }, + "moveToOrganization": { + "message": "In Organisation verschieben" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ verschoben nach $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Wähle eine Organisation aus, in die du diesen Eintrag verschieben möchtest. Das Verschieben in eine Organisation überträgt das Eigentum an diese Organisation. Du bist nicht mehr der direkte Besitzer dieses Eintrags, sobald er verschoben wurde." + }, + "attachments": { + "message": "Anhänge" + }, + "viewItem": { + "message": "Eintrag anzeigen" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Neue URL" + }, + "username": { + "message": "Nutzername" + }, + "password": { + "message": "Passwort" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Eintrag editieren" + }, + "emailAddress": { + "message": "E-Mail-Adresse" + }, + "verificationCodeTotp": { + "message": "Verifizierungscode (TOTP)" + }, + "website": { + "message": "Webseite" + }, + "notes": { + "message": "Notizen" + }, + "customFields": { + "message": "Benutzerdefinierte Felder" + }, + "launch": { + "message": "Öffnen" + }, + "copyValue": { + "message": "Wert kopieren", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimieren beim Kopieren in die Zwischenablage" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimieren, wenn Daten eines Eintrags in die Zwischenablage kopiert werden." + }, + "toggleVisibility": { + "message": "Sichtbarkeit umschalten" + }, + "toggleCollapse": { + "message": "Ein- und ausklappen", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Name des Karteninhabers" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Marke" + }, + "expiration": { + "message": "Gültig bis" + }, + "securityCode": { + "message": "Sicherheitscode" + }, + "identityName": { + "message": "Identitätsname" + }, + "company": { + "message": "Firma" + }, + "ssn": { + "message": "Sozialversicherungsnummer" + }, + "passportNumber": { + "message": "Reisepassnummer" + }, + "licenseNumber": { + "message": "Führerscheinnummer" + }, + "email": { + "message": "E-Mail" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresse" + }, + "premiumRequired": { + "message": "Premium notwendig" + }, + "premiumRequiredDesc": { + "message": "Für diese Funktion ist eine Premium-Mitgliedschaft notwendig." + }, + "errorOccurred": { + "message": "Ein Fehler ist aufgetreten." + }, + "error": { + "message": "Fehler" + }, + "january": { + "message": "Januar" + }, + "february": { + "message": "Februar" + }, + "march": { + "message": "März" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Mai" + }, + "june": { + "message": "Juni" + }, + "july": { + "message": "Juli" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "Dezember" + }, + "ex": { + "message": "Bsp.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Frau" + }, + "ms": { + "message": "Frau" + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Ablaufmonat" + }, + "expirationYear": { + "message": "Ablaufjahr" + }, + "select": { + "message": "Auswählen" + }, + "other": { + "message": "Sonstige" + }, + "generatePassword": { + "message": "Passwort generieren" + }, + "type": { + "message": "Typ" + }, + "firstName": { + "message": "Vorname" + }, + "middleName": { + "message": "Zweiter Vorname" + }, + "lastName": { + "message": "Nachname" + }, + "fullName": { + "message": "Vollständiger Name" + }, + "address1": { + "message": "Adresse 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "Stadt" + }, + "stateProvince": { + "message": "Bundesland" + }, + "zipPostalCode": { + "message": "Postleitzahl" + }, + "country": { + "message": "Land" + }, + "save": { + "message": "Speichern" + }, + "cancel": { + "message": "Abbrechen" + }, + "delete": { + "message": "Löschen" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Bearbeiten" + }, + "authenticatorKeyTotp": { + "message": "Authentifizierungsschlüssel (TOTP)" + }, + "folder": { + "message": "Ordner" + }, + "newCustomField": { + "message": "Neues benutzerdefiniertes Feld" + }, + "value": { + "message": "Wert" + }, + "dragToSort": { + "message": "Zum Sortieren ziehen" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Versteckt" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Verknüpft", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Verknüpfter Wert", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Entfernen" + }, + "nameRequired": { + "message": "Name ist erforderlich." + }, + "addedItem": { + "message": "Eintrag hinzugefügt" + }, + "editedItem": { + "message": "Eintrag bearbeitet" + }, + "deleteItem": { + "message": "Eintrag löschen" + }, + "deleteFolder": { + "message": "Ordner löschen" + }, + "deleteAttachment": { + "message": "Anhang löschen" + }, + "deleteItemConfirmation": { + "message": "Soll dieser Eintrag wirklich in den Papierkorb verschoben werden?" + }, + "deletedItem": { + "message": "Eintrag in Papierkorb verschoben" + }, + "overwritePasswordConfirmation": { + "message": "Bist du sicher, dass du das Passwort überschreiben möchtest?" + }, + "overwriteUsername": { + "message": "Benutzername überschreiben" + }, + "overwriteUsernameConfirmation": { + "message": "Bist du sicher, dass du den aktuellen Benutzernamen überschreiben möchtest?" + }, + "noneFolder": { + "message": "Kein Ordner", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Ordner hinzufügen" + }, + "editFolder": { + "message": "Ordner bearbeiten" + }, + "regeneratePassword": { + "message": "Password neu generieren" + }, + "copyPassword": { + "message": "Passwort kopieren" + }, + "copyUri": { + "message": "URI kopieren" + }, + "copyVerificationCodeTotp": { + "message": "Verifizierungscode (TOTP) kopieren" + }, + "length": { + "message": "Länge" + }, + "numWords": { + "message": "Anzahl der Wörter" + }, + "wordSeparator": { + "message": "Worttrennzeichen" + }, + "capitalize": { + "message": "Großschreiben", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Ziffer hinzufügen" + }, + "close": { + "message": "Schließen" + }, + "minNumbers": { + "message": "Mindestanzahl Zahlen" + }, + "minSpecial": { + "message": "Mindestanzahl Sonderzeichen", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Mehrdeutige Zeichen vermeiden" + }, + "searchCollection": { + "message": "Sammlung durchsuchen" + }, + "searchFolder": { + "message": "Ordner durchsuchen" + }, + "searchFavorites": { + "message": "Favoriten durchsuchen" + }, + "searchType": { + "message": "Suchmodus", + "description": "Search item type" + }, + "newAttachment": { + "message": "Anhang hinzufügen" + }, + "deletedAttachment": { + "message": "Anhang gelöscht" + }, + "deleteAttachmentConfirmation": { + "message": "Bist du sicher, dass du diesen Anhang löschen möchtest?" + }, + "attachmentSaved": { + "message": "Die Datei wurde gespeichert." + }, + "file": { + "message": "Datei" + }, + "selectFile": { + "message": "Wähle eine Datei." + }, + "maxFileSize": { + "message": "Die maximale Dateigröße beträgt 500 MB." + }, + "updateKey": { + "message": "Du kannst diese Funktion nicht nutzen, bevor du deinen Verschlüsselungsschlüssel aktualisiert hast." + }, + "editedFolder": { + "message": "Ordner bearbeitet" + }, + "addedFolder": { + "message": "Ordner hinzugefügt" + }, + "deleteFolderConfirmation": { + "message": "Bist du sicher, dass du diesen Ordner löschen möchtest?" + }, + "deletedFolder": { + "message": "Ordner gelöscht" + }, + "loginOrCreateNewAccount": { + "message": "Einloggen oder einen neuen Account erstellen, um auf den Tresor zuzugreifen." + }, + "createAccount": { + "message": "Account erstellen" + }, + "logIn": { + "message": "Anmelden" + }, + "submit": { + "message": "Absenden" + }, + "masterPass": { + "message": "Master-Passwort" + }, + "masterPassDesc": { + "message": "Das Master-Passwort wird verwendet, um den Tresor zu öffnen. Es ist sehr wichtig, dass du das Passwort nicht vergisst, da es keine Möglichkeit gibt, es zurückzusetzen." + }, + "masterPassHintDesc": { + "message": "Ein Master-Passwort-Hinweis kann dir helfen, dich an das Passwort zu erinnern, solltest du es vergessen." + }, + "reTypeMasterPass": { + "message": "Master-Passwort wiederholen" + }, + "masterPassHint": { + "message": "Master-Passwort-Hinweis (optional)" + }, + "settings": { + "message": "Einstellungen" + }, + "passwordHint": { + "message": "Passwort-Hinweis" + }, + "enterEmailToGetHint": { + "message": "Gib die E-Mail-Adresse deines Kontos ein, um den Hinweis für dein Master-Passwort zu erhalten." + }, + "getMasterPasswordHint": { + "message": "Hinweis zum Master-Passwort zusenden" + }, + "emailRequired": { + "message": "Die E-Mail-Adresse ist erforderlich." + }, + "invalidEmail": { + "message": "Ungültige E-Mail-Adresse." + }, + "masterPassRequired": { + "message": "Das Master-Passwort ist erforderlich." + }, + "masterPassLength": { + "message": "Das Master-Passwort muss mindestens 8 Zeichen lang sein." + }, + "masterPassDoesntMatch": { + "message": "Die Passwortbestätigung stimmt nicht mit dem Passwort überein." + }, + "newAccountCreated": { + "message": "Dein neues Konto wurde erstellt! Du kannst dich jetzt anmelden." + }, + "masterPassSent": { + "message": "Wir haben dir eine E-Mail mit dem Master-Passwort-Hinweis gesendet." + }, + "unexpectedError": { + "message": "Ein unerwarteter Fehler ist aufgetreten." + }, + "itemInformation": { + "message": "Eintrags-Information" + }, + "noItemsInList": { + "message": "Keine Einträge vorhanden." + }, + "sendVerificationCode": { + "message": "Einen Bestätigungscode an deine E-Mail senden" + }, + "sendCode": { + "message": "Code senden" + }, + "codeSent": { + "message": "Code gesendet" + }, + "verificationCode": { + "message": "Verifizierungscode" + }, + "confirmIdentity": { + "message": "Bestätige deine Identität, um fortzufahren." + }, + "verificationCodeRequired": { + "message": "Verifizierungscode wird benötigt." + }, + "invalidVerificationCode": { + "message": "Ungültiger Verifizierungscode" + }, + "continue": { + "message": "Weiter" + }, + "enterVerificationCodeApp": { + "message": "Gib den 6-stelligen Verifizierungscode aus deiner Authentifizierungs-App ein." + }, + "enterVerificationCodeEmail": { + "message": "Gib den 6-stelligen Bestätigungscode ein, der an $EMAIL$ gesendet wurde.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verifizierungsmail wurde an $EMAIL$ gesendet.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Eingeloggt bleiben" + }, + "sendVerificationCodeEmailAgain": { + "message": "E-Mail mit Bestätigungscode erneut versenden" + }, + "useAnotherTwoStepMethod": { + "message": "Eine andere Zwei-Faktor-Login-Methode verwenden" + }, + "insertYubiKey": { + "message": "Stecke deinen YubiKey in einen USB-Anschluss deines Computers, dann berühre den Button." + }, + "insertU2f": { + "message": "Stecke deinen Sicherheitsschlüssel in einen USB-Anschluss deines Computers. Falls er einen Knopf hat, drücke diesen." + }, + "recoveryCodeDesc": { + "message": "Zugang zu allen Zwei-Faktor-Anbietern verloren? Benutze deinen Wiederherstellungscode, um alle Zwei-Faktor-Anbieter in deinem Konto zu deaktivieren." + }, + "recoveryCodeTitle": { + "message": "Wiederherstellungscode" + }, + "authenticatorAppTitle": { + "message": "Authentifizierungs-App" + }, + "authenticatorAppDesc": { + "message": "Verwende eine Authentifizierungs-App (wie zum Beispiel Authy oder Google Authenticator), um zeitbasierte Verifizierungscodes zu generieren.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey-OTP-Sicherheitsschlüssel" + }, + "yubiKeyDesc": { + "message": "Verwende einen YubiKey, um auf dein Konto zuzugreifen. Funktioniert mit den Geräten YubiKey 4, Nano 4, 4C und NEO." + }, + "duoDesc": { + "message": "Verifiziere mit Duo Security, indem du die Duo-Mobile-App, SMS, Anrufe oder U2F-Sicherheitsschlüssel benutzt.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Nutze Duo Security, um dich mit der Duo-Mobile-App, SMS, per Anruf oder U2F-Sicherheitsschlüssel bei deiner Organisation zu verifizieren.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Benutze einen WebAuthn-kompatiblen Sicherheitsschlüssel um auf dein Konto zuzugreifen." + }, + "emailTitle": { + "message": "E-Mail" + }, + "emailDesc": { + "message": "Bestätigungscodes werden dir per E-Mail zugesandt." + }, + "loginUnavailable": { + "message": "Login nicht verfügbar" + }, + "noTwoStepProviders": { + "message": "Dieses Konto hat eine aktive Zwei-Faktor-Authentifizierung, allerdings wird keiner der konfigurierten Zwei-Faktor-Anbieter von diesem Gerät unterstützt." + }, + "noTwoStepProviders2": { + "message": "Bitte wähle zusätzliche Dienste, die über mehrere Geräte funktionieren (zum Beispiel eine Authentifizierungs-App)." + }, + "twoStepOptions": { + "message": "Optionen für Zwei-Faktor-Authentifizierung" + }, + "selfHostedEnvironment": { + "message": "Selbstgehostete Anwendung" + }, + "selfHostedEnvironmentFooter": { + "message": "Bitte gib die Basis-URL deiner selbst gehosteten Bitwarden-Installation an." + }, + "customEnvironment": { + "message": "Benutzerdefinierte Umgebung" + }, + "customEnvironmentFooter": { + "message": "Für fortgeschrittene Benutzer. Du kannst die Basis-URL der jeweiligen Dienste unabhängig voneinander festlegen." + }, + "baseUrl": { + "message": "Server-URL" + }, + "apiUrl": { + "message": "API-Server-URL" + }, + "webVaultUrl": { + "message": "Web-Tresor-Server-URL" + }, + "identityUrl": { + "message": "Identitätsserver-URL" + }, + "notificationsUrl": { + "message": "URL des Benachrichtigungsservers" + }, + "iconsUrl": { + "message": "Icons-Server-URL" + }, + "environmentSaved": { + "message": "Die URLs der Umgebung wurden gespeichert." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nein" + }, + "overwritePassword": { + "message": "Passwort ersetzen" + }, + "learnMore": { + "message": "Mehr erfahren" + }, + "featureUnavailable": { + "message": "Funktion nicht verfügbar" + }, + "loggedOut": { + "message": "Abgemeldet" + }, + "loginExpired": { + "message": "Deine Sitzung ist abgelaufen." + }, + "logOutConfirmation": { + "message": "Bist du sicher, dass du dich abmelden willst?" + }, + "logOut": { + "message": "Abmelden" + }, + "addNewLogin": { + "message": "Login hinzufügen" + }, + "addNewItem": { + "message": "Neuen Eintrag hinzufügen" + }, + "addNewFolder": { + "message": "Neuen Ordner hinzufügen" + }, + "view": { + "message": "Ansicht" + }, + "account": { + "message": "Konto" + }, + "loading": { + "message": "Lade …" + }, + "lockVault": { + "message": "Tresor sperren" + }, + "passwordGenerator": { + "message": "Passwort-Generator" + }, + "contactUs": { + "message": "Kontakt" + }, + "getHelp": { + "message": "Hilfe erhalten" + }, + "fileBugReport": { + "message": "Einen Fehler melden" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Folge uns" + }, + "syncVault": { + "message": "Tresor jetzt synchronisieren" + }, + "changeMasterPass": { + "message": "Master-Passwort ändern" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kannst dein Master-Passwort im bitwarden.com-Web-Tresor ändern. Möchtest du die Seite jetzt öffnen?" + }, + "fingerprintPhrase": { + "message": "Prüfschlüssel", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Prüfschlüssel für deinen Account", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Web-Tresor öffnen" + }, + "getMobileApp": { + "message": "Hole dir die mobile App" + }, + "getBrowserExtension": { + "message": "Browser-Erweiterung installieren" + }, + "syncingComplete": { + "message": "Synchronisierung abgeschlossen" + }, + "syncingFailed": { + "message": "Synchronisierung fehlgeschlagen" + }, + "yourVaultIsLocked": { + "message": "Ihr Tresor ist gesperrt. Überprüfen Sie Ihr Master-Passwort, um fortzufahren." + }, + "unlock": { + "message": "Entsperren" + }, + "loggedInAsOn": { + "message": "Eingeloggt als $EMAIL$ auf $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ungültiges Master-Passwort" + }, + "twoStepLoginConfirmation": { + "message": "Mit Zwei-Faktor-Authentifizierung wird dein Account zusätzlich abgesichert, da jede Anmeldung durch einen Sicherheitscode, eine Authentifizierungs-App, SMS, einen Anruf oder eine E-Mail verifiziert werden muss. Zwei-Faktor-Authentifizierung kann im bitwarden.com-Web-Tresor aktiviert werden. Möchtest du die Seite jetzt öffnen?" + }, + "twoStepLogin": { + "message": "Zwei-Faktor-Authentifizierung" + }, + "vaultTimeout": { + "message": "Tresor-Timeout" + }, + "vaultTimeoutDesc": { + "message": "Wähle, wann der Timeout deines Tresors aktiviert werden soll und welche Aktion er bewirken soll." + }, + "immediately": { + "message": "Sofort" + }, + "tenSeconds": { + "message": "10 Sekunden" + }, + "twentySeconds": { + "message": "20 Sekunden" + }, + "thirtySeconds": { + "message": "30 Sekunden" + }, + "oneMinute": { + "message": "1 Minute" + }, + "twoMinutes": { + "message": "2 Minuten" + }, + "fiveMinutes": { + "message": "5 Minuten" + }, + "fifteenMinutes": { + "message": "15 Minuten" + }, + "thirtyMinutes": { + "message": "30 Minuten" + }, + "oneHour": { + "message": "1 Stunde" + }, + "fourHours": { + "message": "4 Stunden" + }, + "onIdle": { + "message": "Im Leerlauf" + }, + "onSleep": { + "message": "Im Standby" + }, + "onLocked": { + "message": "Wenn System gesperrt" + }, + "onRestart": { + "message": "Bei Neustart" + }, + "never": { + "message": "Niemals" + }, + "security": { + "message": "Sicherheit" + }, + "clearClipboard": { + "message": "Zwischenablage leeren", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Kopierten Inhalt automatisch aus der Zwischenablage löschen.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Website-Icons deaktivieren" + }, + "disableFaviconDesc": { + "message": "Website-Icons zeigen ein wiedererkennbares Bild neben jedem Login in deinem Tresor." + }, + "enableMinToTray": { + "message": "Minimieren und in der Taskleiste anzeigen" + }, + "enableMinToTrayDesc": { + "message": "Zeige ein Symbol in der Taskleiste, wenn das Fenster minimiert wird." + }, + "enableMinToMenuBar": { + "message": "In Menüleiste minimieren" + }, + "enableMinToMenuBarDesc": { + "message": "Bei minimiertem Fenster stattdessen ein Symbol in der Menüleiste anzeigen." + }, + "enableCloseToTray": { + "message": "In Taskleiste minimieren" + }, + "enableCloseToTrayDesc": { + "message": "Zeige ein Symbol in der Taskleiste, wenn das Fenster geschlossen wird." + }, + "enableCloseToMenuBar": { + "message": "In Menüleiste schließen" + }, + "enableCloseToMenuBarDesc": { + "message": "Beim Schließen des Fensters stattdessen ein Symbol in der Menüleiste anzeigen." + }, + "enableTray": { + "message": "Taskleisten-Symbol einschalten" + }, + "enableTrayDesc": { + "message": "Dauerhaft ein Symbol in der Taskleiste anzeigen." + }, + "startToTray": { + "message": "Minimiert in Taskleiste starten" + }, + "startToTrayDesc": { + "message": "Beim ersten Start der Anwendung nur minimiert in der Taskleiste anzeigen." + }, + "startToMenuBar": { + "message": "In der Menüleiste starten" + }, + "startToMenuBarDesc": { + "message": "Beim ersten Start der Anwendung nur ein Symbol in der Menüleiste anzeigen." + }, + "openAtLogin": { + "message": "Automatisch bei der Anmeldung starten" + }, + "openAtLoginDesc": { + "message": "Die Bitwarden Desktop-Anwendung automatisch bei der Anmeldung starten." + }, + "alwaysShowDock": { + "message": "Immer im Dock anzeigen" + }, + "alwaysShowDockDesc": { + "message": "Das Bitwarden-Symbol im Dock anzeigen, auch wenn es in die Menüleiste minimiert wird." + }, + "confirmTrayTitle": { + "message": "Tray deaktivieren bestätigen" + }, + "confirmTrayDesc": { + "message": "Das Deaktivieren dieser Einstellung wird auch alle anderen Taskleisten-Einstellungen deaktivieren." + }, + "language": { + "message": "Sprache" + }, + "languageDesc": { + "message": "Ändere die Sprache der Anwendung. Ein Neustart ist erforderlich." + }, + "theme": { + "message": "Design" + }, + "themeDesc": { + "message": "Ändere das Farbschema der Anwendung." + }, + "dark": { + "message": "Dunkel", + "description": "Dark color" + }, + "light": { + "message": "Hell", + "description": "Light color" + }, + "copy": { + "message": "Kopieren", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Auf Updates prüfen" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Neu starten, um zu updaten" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ steht zur Installation bereit. Du musst Bitwarden neustarten, um die Installation abzuschließen. Möchtest du jetzt neustarten und updaten?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Aktualisierung verfügbar" + }, + "updateAvailableDesc": { + "message": "Ein Update wurde gefunden. Möchtest du es jetzt herunterladen?" + }, + "restart": { + "message": "Neustarten" + }, + "later": { + "message": "Später" + }, + "noUpdatesAvailable": { + "message": "Derzeit gibt es keine Updates. Du verwendest die neueste Version." + }, + "updateError": { + "message": "Update-Fehler" + }, + "unknown": { + "message": "Unbekannt" + }, + "copyUsername": { + "message": "Nutzernamen kopieren" + }, + "copyNumber": { + "message": "Nummer kopieren", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Sicherheitscode kopieren", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium-Mitgliedschaft" + }, + "premiumManage": { + "message": "Mitgliedschaft verwalten" + }, + "premiumManageAlert": { + "message": "Du kannst deine Mitgliedschaft im bitwarden.com Webtresor verwalten. Möchtest du die Seite jetzt aufrufen?" + }, + "premiumRefresh": { + "message": "Mitgliedschaft erneuern" + }, + "premiumNotCurrentMember": { + "message": "Du hast derzeit keine Premium-Mitgliedschaft." + }, + "premiumSignUpAndGet": { + "message": "Werde Premium-Mitglied und erhalte dafür:" + }, + "premiumSignUpStorage": { + "message": "1 GB verschlüsselter Speicherplatz für Dateianhänge." + }, + "premiumSignUpTwoStep": { + "message": "Zusätzliche Zwei-Faktor-Anmeldung über YubiKey, FIDO U2F, und Duo." + }, + "premiumSignUpReports": { + "message": "Berichte über Kennworthygiene, Kontostatus und Datenschutzverletzungen, um Ihren Tresor sicher zu halten." + }, + "premiumSignUpTotp": { + "message": "TOTP Prüfcode (2FA) Generator für Anmeldungen in deinem Tresor." + }, + "premiumSignUpSupport": { + "message": "Vorrangiger Kunden-Support." + }, + "premiumSignUpFuture": { + "message": "Alle zukünftigen Premium-Features. Mehr in Kürze!" + }, + "premiumPurchase": { + "message": "Premium-Mitgliedschaft kaufen" + }, + "premiumPurchaseAlert": { + "message": "Du kannst deine Premium-Mitgliedschaft im bitwarden.com Web-Tresor kaufen. Möchtest du die Webseite jetzt besuchen?" + }, + "premiumCurrentMember": { + "message": "Du bist ein Premium-Mitglied!" + }, + "premiumCurrentMemberThanks": { + "message": "Vielen Dank, dass du Bitwarden unterstützt." + }, + "premiumPrice": { + "message": "Das alles für $PRICE$ pro Jahr!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Aktualisierung abgeschlossen" + }, + "passwordHistory": { + "message": "Kennwort-Historie" + }, + "clear": { + "message": "Leeren", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Keine Einträge zum Anzeigen vorhanden." + }, + "undo": { + "message": "Rückgängig" + }, + "redo": { + "message": "Wiederherstellen" + }, + "cut": { + "message": "Ausschneiden", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Einfügen", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Alles auswählen" + }, + "zoomIn": { + "message": "Vergrößern" + }, + "zoomOut": { + "message": "Verkleinern" + }, + "resetZoom": { + "message": "Zoom zurücksetzen" + }, + "toggleFullScreen": { + "message": "Vollbildmodus umschalten" + }, + "reload": { + "message": "Neu laden" + }, + "toggleDevTools": { + "message": "Entwickler-Werkzeuge ein/aus" + }, + "minimize": { + "message": "Minimieren", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoomen" + }, + "bringAllToFront": { + "message": "Alle in den Vordergrund", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Über Bitwarden" + }, + "services": { + "message": "Dienste" + }, + "hideBitwarden": { + "message": "Bitwarden ausblenden" + }, + "hideOthers": { + "message": "Andere ausblenden" + }, + "showAll": { + "message": "Alles anzeigen" + }, + "quitBitwarden": { + "message": "Bitwarden beenden" + }, + "valueCopied": { + "message": "$VALUE$ kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Hilfe" + }, + "window": { + "message": "Fenster" + }, + "checkPassword": { + "message": "Überprüfe ob dein Kennwort kompromittiert ist." + }, + "passwordExposed": { + "message": "Dieses Kennwort wurde $VALUE$ in öffentlichen Passwortdatenbanken gefunden. Du solltest es ändern.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Dieses Kennwort wurde in keinen bekannten Datensätzen gefunden. Es sollte sicher sein." + }, + "baseDomain": { + "message": "Basis-Domäne", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain-Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Server", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exakt" + }, + "startsWith": { + "message": "Beginnt mit" + }, + "regEx": { + "message": "Regulärer Ausdruck", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match-Erkennung", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standard-Match-Erkennung", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Umschaltoptionen" + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Standard" + }, + "exit": { + "message": "Beenden" + }, + "showHide": { + "message": "Zeigen / Verbergen", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Nur in der Taskleiste anzeigen" + }, + "alwaysOnTop": { + "message": "Immer im Vordergrund", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Aktualisiert", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Passwort aktualisiert", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Tresor exportieren" + }, + "fileFormat": { + "message": "Dateiformat" + }, + "warning": { + "message": "WARNUNG", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Tresor-Export bestätigen" + }, + "exportWarningDesc": { + "message": "Dieser Export enthält deine Tresordaten in einem unverschlüsseltem Format. Du solltest sie nicht speichern oder über unsichere Kanäle (z. B. E-Mail) senden. Lösche sie sofort nach ihrer Verwendung." + }, + "encExportKeyWarningDesc": { + "message": "Dieser Export verschlüsselt deine Daten mit dem Verschlüsselungscode deines Kontos. Falls du deinen Verschlüsselungscode erneuerst, solltest du den Export erneut durchführen, da du die zuvor erstellte Datei ansonsten nicht mehr entschlüsseln kannst." + }, + "encExportAccountWarningDesc": { + "message": "Die Verschlüsselungscodes eines Kontos sind für jedes Bitwarden-Benutzerkonto einzigartig, deshalb kannst du keinen verschlüsselten Export in ein anderes Konto importieren." + }, + "noOrganizationsList": { + "message": "Du bist kein Mitglied einer Organisation. Organisationen erlauben es dir Passwörter sicher mit anderen Nutzern zu teilen." + }, + "noCollectionsInList": { + "message": "Keine Sammlungen vorhanden." + }, + "ownership": { + "message": "Besitzer" + }, + "whoOwnsThisItem": { + "message": "Wem gehört dieser Eintrag?" + }, + "strong": { + "message": "Stark", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Gut", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Schwach", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Schwaches Master-Passwort" + }, + "weakMasterPasswordDesc": { + "message": "Das Master-Passwort, das du gewählt hast, ist schwach. Du solltest ein starkes Master-Passwort (oder eine Passphrase) auswählen, um dein Bitwarden-Konto richtig zu schützen. Bist du sicher, dass du dieses Master-Passwort verwenden willst?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Mit PIN-Code entsperren" + }, + "setYourPinCode": { + "message": "Gebe deinen PIN-Code für das Entsperren von Bitwarden ein. Deine PIN-Einstellungen werden zurückgesetzt, wenn du dich vollständig von der Anwendung abmeldest." + }, + "pinRequired": { + "message": "PIN-Code ist erforderlich." + }, + "invalidPin": { + "message": "Ungültiger PIN-Code." + }, + "unlockWithWindowsHello": { + "message": "Mit Windows Hello entsperren" + }, + "windowsHelloConsentMessage": { + "message": "Für Bitwarden verifizieren." + }, + "unlockWithTouchId": { + "message": "Mit Touch ID entsperren" + }, + "touchIdConsentMessage": { + "message": "Deinen Tresor entsperren" + }, + "noAutoPromptWindowsHello": { + "message": "Beim Start nicht nach Windows Hello fragen." + }, + "noAutoPromptTouchId": { + "message": "Beim Start nicht nach Touch ID fragen." + }, + "lockWithMasterPassOnRestart": { + "message": "Beim Neustart mit Master-Passwort sperren" + }, + "preferences": { + "message": "Einstellungen" + }, + "enableMenuBar": { + "message": "Menüleisten-Symbol aktivieren" + }, + "enableMenuBarDesc": { + "message": "Immer ein Symbol in der Menüleiste anzeigen." + }, + "hideToMenuBar": { + "message": "In Menüleiste ausblenden" + }, + "selectOneCollection": { + "message": "Du musst mindestens eine Sammlung auswählen." + }, + "premiumUpdated": { + "message": "Du hast ein Premium-Abo aktiviert." + }, + "restore": { + "message": "Wiederherstellen" + }, + "premiumManageAlertAppStore": { + "message": "Du kannst dein Abonnement über den App Store verwalten. Willst du jetzt den App Store öffnen?" + }, + "legal": { + "message": "Rechtliches", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Nutzungsbedingungen" + }, + "privacyPolicy": { + "message": "Datenschutzbestimmungen" + }, + "unsavedChangesConfirmation": { + "message": "Willst du wirklich aufhören? Wenn du jetzt aufhörst, werden deine aktuellen Eingaben nicht gespeichert." + }, + "unsavedChangesTitle": { + "message": "Nicht gespeicherte Änderungen" + }, + "clone": { + "message": "Duplizieren" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien beeinflussen deine Generator-Einstellungen." + }, + "vaultTimeoutAction": { + "message": "Aktion bei Tresor-Timeout" + }, + "vaultTimeoutActionLockDesc": { + "message": "Ein gesperrter Tresor erfordert die erneute Eingabe des Master-Passworts, um abermals darauf zugreifen zu können." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Ein ausgeloggter Tresor erfordert eine Neu-Authentifizierung, um erneut darauf zugreifen zu können." + }, + "lock": { + "message": "Sperren", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Papierkorb", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Papierkorb durchsuchen" + }, + "permanentlyDeleteItem": { + "message": "Eintrag dauerhaft löschen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Soll dieser Eintrag wirklich dauerhaft gelöscht werden?" + }, + "permanentlyDeletedItem": { + "message": "Eintrag dauerhaft gelöscht" + }, + "restoreItem": { + "message": "Eintrag wiederherstellen" + }, + "restoreItemConfirmation": { + "message": "Soll dieser Eintrag wirklich wiederhergestellt werden?" + }, + "restoredItem": { + "message": "Eintrag wiederhergestellt" + }, + "permanentlyDelete": { + "message": "Dauerhaft löschen" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Nach dem Ausloggen verlierest du jeglichen Zugriff auf deinen Tresor und es ist nach Ablauf der Timeout-Zeit eine Online-Authentifizierung erforderlich. Bist du sicher, dass du diese Einstellung nutzen möchtest?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bestätigung der Timeout-Aktion" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Masterpasswort festlegen" + }, + "ssoCompleteRegistration": { + "message": "Bitte lege ein Masterpasswort für den Schutz deines Tresors fest, um die Anmeldung über SSO abzuschließen." + }, + "newMasterPass": { + "message": "Neues Master-Passwort" + }, + "confirmNewMasterPass": { + "message": "Neues Master-Passwort bestätigen" + }, + "masterPasswordPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien erfordern, dass dein Masterpasswort die folgenden Anforderungen erfüllt:" + }, + "policyInEffectMinComplexity": { + "message": "Kleinster Komplexitätsgrad von $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Mindestlänge von $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Enthält einen oder mehrere Großbuchstaben" + }, + "policyInEffectLowercase": { + "message": "Enthält einen oder mehrere Kleinbuchstaben" + }, + "policyInEffectNumbers": { + "message": "Enthält eine oder mehrere Zahlen" + }, + "policyInEffectSpecial": { + "message": "Enthält eines oder mehrere der folgenden Sonderzeichen $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Dein neues Masterpasswort entspricht nicht den Anforderungen der Richtlinie." + }, + "acceptPolicies": { + "message": "Durch Anwählen dieses Kästchens erklärst du dich mit folgendem einverstanden:" + }, + "acceptPoliciesError": { + "message": "Die Nutzungsbedingungen und die Datenschutzerklärung wurden nicht akzeptiert." + }, + "enableBrowserIntegration": { + "message": "Browser-Integration aktivieren" + }, + "enableBrowserIntegrationDesc": { + "message": "Die Browser-Integration wird für Biometrie im Browser verwendet." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser-Integration wird nicht unterstützt" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Leider wird die Browser-Integration derzeit nur in der Mac App Store Version unterstützt." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser-Integration wird nicht unterstützt" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Leider wird die Browser-Integration derzeit nicht in der Windows Store Version unterstützt." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Überprüfung für Browser-Integration verlangen" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Eine zusätzliche Sicherheitsebene aktivieren, indem eine Prüfschlüssel-Validierung verlangt wird, wenn eine Verbindung zwischen deiner Desktop-Anwendung und dem Browser aufgebaut wird. Nach Aktivierung ist bei jedem Verbindungsaufbau ein Benutzer-Eingriff erforderlich." + }, + "approve": { + "message": "Genehmigen" + }, + "verifyBrowserTitle": { + "message": "Browser Verbindung bestätigen" + }, + "verifyBrowserDesc": { + "message": "Bitte stelle sicher, dass der angezeigte Prüfschlüssel identisch mit dem Prüfschlüssel in der Browser-Erweiterung ist." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrie ist nicht aktiviert" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrie im Browser setzt voraus, dass Biometrie zuerst in den Einstellungen der Desktop-Anwendung aktiviert ist." + }, + "personalOwnershipSubmitError": { + "message": "Aufgrund einer Unternehmensrichtlinie darfst du keine Einträge in deinem persönlichen Tresor speichern. Ändere die Eigentümer-Option in eine Organisation und wähle aus den verfügbaren Sammlungen." + }, + "hintEqualsPassword": { + "message": "Dein Passwort-Hinweis darf nicht identisch mit deinem Passwort sein." + }, + "personalOwnershipPolicyInEffect": { + "message": "Eine Organisationsrichtlinie beeinflusst deine Eigentümer-Optionen." + }, + "allSends": { + "message": "Alle Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Datei" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Sends suchen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send bearbeiten", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mein Tresor" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Löschdatum" + }, + "deletionDateDesc": { + "message": "Das Send wird am angegebenen Datum zur angegebenen Uhrzeit dauerhaft gelöscht.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Ablaufdatum" + }, + "expirationDateDesc": { + "message": "Wenn aktiviert, verfällt der Zugriff auf dieses Send am angegebenen Datum zur angegebenen Uhrzeit.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximale Zugriffsanzahl" + }, + "maxAccessCountDesc": { + "message": "Falls aktiviert, können Benutzer nicht mehr auf dieses Send zugreifen, sobald die maximale Zugriffsanzahl erreicht ist.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Aktuelle Zugriffsanzahl" + }, + "disableSend": { + "message": "Dieses Send deaktivieren, damit niemand darauf zugreifen kann.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optional ein Passwort verlangen, damit Benutzer auf dieses Send zugreifen können.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private Notizen zu diesem Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send-Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Beim Zugriff auf dieses Send den Text standardmäßig ausblenden", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send erstellt", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send bearbeitet", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Gelöschtes Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Neues Passwort" + }, + "whatTypeOfSend": { + "message": "Welche Art von Send ist das?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send erstellen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Der Text, den du senden möchtest." + }, + "sendFileDesc": { + "message": "Die Datei, die du senden möchtest." + }, + "days": { + "message": "$DAYS$ Tage", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 Tag" + }, + "custom": { + "message": "Benutzerdefiniert" + }, + "deleteSendConfirmation": { + "message": "Bist du sicher, dass du dieses Send löschen möchtest?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Send-Link in Zwischenablage kopieren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Den Link zum Teilen dieses Sends beim Speichern in meine Zwischenablage kopieren." + }, + "sendDisabled": { + "message": "Send deaktiviert", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Aufgrund einer Unternehmensrichtlinie kannst du nur ein bestehendes Send löschen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Link kopieren" + }, + "disabled": { + "message": "Deaktiviert" + }, + "maxAccessCountReached": { + "message": "Maximale Zugriffsanzahl erreicht" + }, + "expired": { + "message": "Abgelaufen" + }, + "pendingDeletion": { + "message": "Ausstehende Löschung" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn authentifizieren" + }, + "hideEmail": { + "message": "Meine E-Mail-Adresse vor den Empfängern ausblenden." + }, + "sendOptionsPolicyInEffect": { + "message": "Eine oder mehrere Organisationsrichtlinien beeinflussen deine Send Einstellungen." + }, + "emailVerificationRequired": { + "message": "E-Mail-Verifizierung erforderlich" + }, + "emailVerificationRequiredDesc": { + "message": "Du musst deine E-Mail verifizieren, um diese Funktion nutzen zu können." + }, + "passwordPrompt": { + "message": "Master-Passwort erneut abfragen" + }, + "passwordConfirmation": { + "message": "Master-Passwort bestätigen" + }, + "passwordConfirmationDesc": { + "message": "Diese Aktion ist geschützt. Um fortzufahren, gib bitte dein Master-Passwort erneut ein, um deine Identität zu bestätigen." + }, + "updatedMasterPassword": { + "message": "Master-Passwort aktualisiert" + }, + "updateMasterPassword": { + "message": "Master-Passwort aktualisieren" + }, + "updateMasterPasswordWarning": { + "message": "Dein Master-Passwort wurde kürzlich von einem Administrator deiner Organisation geändert. Um auf den Tresor zuzugreifen, musst du es jetzt aktualisieren. Wenn Du fortfährst, wirst du aus der aktuellen Sitzung abgemeldet und eine erneute Anmeldung ist erforderlich. Aktive Sitzungen auf anderen Geräten können bis zu einer Stunde weiterhin aktiv bleiben." + }, + "hours": { + "message": "Stunden" + }, + "minutes": { + "message": "Minuten" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Deine Unternehmensrichtlinien beeinflussen dein Tresor-Timeout. Das maximal zulässige Tresor-Timeout ist $HOURS$ Stunde(n) und $MINUTES$ Minute(n)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Dein Tresor-Timeout überschreitet die von deinem Unternehmen festgelegten Beschränkungen." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatische Registrierung" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Diese Organisation hat eine Unternehmensrichtlinie, die dich automatisch für die Passwort Zurücksetzung registriert. Die Registrierung wird es Administratoren der Organisation erlauben, dein Master-Passwort zu ändern." + }, + "vaultExportDisabled": { + "message": "Tresor-Export deaktiviert" + }, + "personalVaultExportPolicyInEffect": { + "message": "Eine oder mehrere Unternehmensrichtlinien verhindern es, dass du deinen persönlichen Tresor exportieren kannst." + }, + "addAccount": { + "message": "Konto hinzufügen" + }, + "removeMasterPassword": { + "message": "Master-Passwort entfernen" + }, + "removedMasterPassword": { + "message": "Master-Passwort entfernt." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ verwendet SSO mit einem selbst gehosteten Schlüsselserver. Ein Master-Passwort ist nicht mehr erforderlich, damit sich Mitglieder dieser Organisation anmelden können.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Organisation verlassen" + }, + "leaveOrganizationConfirmation": { + "message": "Bist du sicher, dass du diese Organisation verlassen möchtest?" + }, + "leftOrganization": { + "message": "Du hast die Organisation verlassen." + }, + "ssoKeyConnectorUnavailable": { + "message": "Der Key Connector konnte nicht erreicht werden. Versuche es später erneut." + }, + "lockAllVaults": { + "message": "Alle Tresore sperren" + }, + "accountLimitReached": { + "message": "Es dürfen nicht mehr als 5 Konten gleichzeitig angemeldet sein." + }, + "accountPreferences": { + "message": "Einstellungen" + }, + "appPreferences": { + "message": "App-Einstellungen (Alle Konten)" + }, + "accountSwitcherLimitReached": { + "message": "Kontolimit erreicht. Abmelden von einem Konto, um ein anderes hinzuzufügen." + }, + "settingsTitle": { + "message": "App-Einstellungen für $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch to Other Account" + }, + "options": { + "message": "Optionen" + }, + "sessionTimeout": { + "message": "Deine Sitzung ist abgelaufen. Bitte gehe zurück und versuche dich erneut einzuloggen." + }, + "exportingPersonalVaultTitle": { + "message": "Persönlichen Tresor exportieren" + }, + "exportingPersonalVaultDescription": { + "message": "Nur die persönlichen Tresoreinträge, die mit $EMAIL$ verbunden sind, werden exportiert. Tresoreinträge der Organisation werden nicht berücksichtigt.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Was möchtest du generieren?" + }, + "passwordType": { + "message": "Passworttyp" + }, + "regenerateUsername": { + "message": "Benutzername neu generieren" + }, + "generateUsername": { + "message": "Benutzernamen generieren" + }, + "usernameType": { + "message": "Benutzernamentyp" + }, + "plusAddressedEmail": { + "message": "Mit Plus adressierte E-Mail" + }, + "plusAddressedEmailDesc": { + "message": "Verwende die Unteradressierungsmöglichkeiten deines E-Mail-Providers." + }, + "catchallEmail": { + "message": "Catch-All E-Mail-Adresse" + }, + "catchallEmailDesc": { + "message": "Verwende den konfigurierten Catch-All-Posteingang deiner Domain." + }, + "random": { + "message": "Zufällig" + }, + "randomWord": { + "message": "Zufälliges Wort" + }, + "websiteName": { + "message": "Webseiten-Name" + }, + "service": { + "message": "Dienst" + } +} diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json new file mode 100644 index 0000000000..0ef81c9904 --- /dev/null +++ b/apps/desktop/src/locales/el/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Φίλτρα" + }, + "allItems": { + "message": "Όλα τα στοιχεία" + }, + "favorites": { + "message": "Αγαπημένα" + }, + "types": { + "message": "Τύποι" + }, + "typeLogin": { + "message": "Είσοδος" + }, + "typeCard": { + "message": "Κάρτα" + }, + "typeIdentity": { + "message": "Ταυτότητα" + }, + "typeSecureNote": { + "message": "Ασφαλής Σημείωση" + }, + "folders": { + "message": "Φάκελοι" + }, + "collections": { + "message": "Συλλογές" + }, + "searchVault": { + "message": "Αναζήτηση στο vault" + }, + "addItem": { + "message": "Προσθήκη Στοιχείου" + }, + "shared": { + "message": "Κοινοποιήθηκε" + }, + "share": { + "message": "Κοινοποίηση" + }, + "moveToOrganization": { + "message": "Μετακίνηση στον Οργανισμό" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ μετακινήθηκε στο $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Επιλέξτε έναν οργανισμό στον οποίο θέλετε να μετακινήσετε αυτό το στοιχείο. Η μετακίνηση σε έναν οργανισμό μεταβιβάζει την ιδιοκτησία του στοιχείου σε αυτό τον οργανισμό. Δεν θα είστε πλέον ο άμεσος ιδιοκτήτης αυτού του στοιχείου μόλις το μετακινήσετε." + }, + "attachments": { + "message": "Συνημμένα" + }, + "viewItem": { + "message": "Προβολή Στοιχείου" + }, + "name": { + "message": "Όνομα" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Νέο URI" + }, + "username": { + "message": "Όνομα χρήστη" + }, + "password": { + "message": "Κωδικός" + }, + "passphrase": { + "message": "Συνθηματικό" + }, + "editItem": { + "message": "Επεξεργασία Στοιχείου" + }, + "emailAddress": { + "message": "Διεύθυνση Email" + }, + "verificationCodeTotp": { + "message": "Κωδικός Επαλήθευσης (TOTP)" + }, + "website": { + "message": "Ιστοσελίδα" + }, + "notes": { + "message": "Σημειώσεις" + }, + "customFields": { + "message": "Προσαρμοσμένα Πεδία" + }, + "launch": { + "message": "Εκκίνηση" + }, + "copyValue": { + "message": "Αντιγραφή Τιμής", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Ελαχιστοποίηση κατά την αντιγραφή στο πρόχειρο" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Ελαχιστοποίηση κατά την αντιγραφή των δεδομένων ενός στοιχείου στο πρόχειρο." + }, + "toggleVisibility": { + "message": "Εναλλαγή Ορατότητας" + }, + "toggleCollapse": { + "message": "Εναλλαγή Σύμπτυξης", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Όνομα κατόχου της κάρτας" + }, + "number": { + "message": "Αριθμός" + }, + "brand": { + "message": "Επωνυμία" + }, + "expiration": { + "message": "Λήξη" + }, + "securityCode": { + "message": "Κωδικός Ασφαλείας" + }, + "identityName": { + "message": "Όνομα Ταυτότητας" + }, + "company": { + "message": "Εταιρεία" + }, + "ssn": { + "message": "ΑΜΚΑ" + }, + "passportNumber": { + "message": "Αριθμός Διαβατηρίου" + }, + "licenseNumber": { + "message": "Αριθμός Άδειας" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Τηλέφωνο" + }, + "address": { + "message": "Διεύθυνση" + }, + "premiumRequired": { + "message": "Απαιτείται Έκδοση Premium" + }, + "premiumRequiredDesc": { + "message": "Για να χρησιμοποιήσετε αυτή τη λειτουργία, απαιτείται η έκδοση premium." + }, + "errorOccurred": { + "message": "Παρουσιάστηκε σφάλμα." + }, + "error": { + "message": "Σφάλμα" + }, + "january": { + "message": "Ιανουάριος" + }, + "february": { + "message": "Φεβρουάριος" + }, + "march": { + "message": "Μάρτιος" + }, + "april": { + "message": "Απρίλιος" + }, + "may": { + "message": "Μάιος" + }, + "june": { + "message": "Ιούνιος" + }, + "july": { + "message": "Ιούλιος" + }, + "august": { + "message": "Αύγουστος" + }, + "september": { + "message": "Σεπτέμβριος" + }, + "october": { + "message": "Οκτώβριος" + }, + "november": { + "message": "Νοέμβριος" + }, + "december": { + "message": "Δεκέμβριος" + }, + "ex": { + "message": "π.χ.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Τίτλος" + }, + "mr": { + "message": "Κος" + }, + "mrs": { + "message": "Κα" + }, + "ms": { + "message": "Κα" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Μήνας λήξης" + }, + "expirationYear": { + "message": "Έτος λήξης" + }, + "select": { + "message": "Επιλογή" + }, + "other": { + "message": "Άλλες" + }, + "generatePassword": { + "message": "Δημιουργία Κωδικού" + }, + "type": { + "message": "Τύπος" + }, + "firstName": { + "message": "Όνομα" + }, + "middleName": { + "message": "Μεσαίο Όνομα" + }, + "lastName": { + "message": "Επώνυμο" + }, + "fullName": { + "message": "Ονοματεπώνυμο" + }, + "address1": { + "message": "Διεύθυνση 1" + }, + "address2": { + "message": "Διεύθυνση 2" + }, + "address3": { + "message": "Διεύθυνση 3" + }, + "cityTown": { + "message": "Πόλη / Κωμόπολη" + }, + "stateProvince": { + "message": "Περιοχή / Νομός" + }, + "zipPostalCode": { + "message": "Ταχυδρομικός Κώδικας" + }, + "country": { + "message": "Χώρα" + }, + "save": { + "message": "Αποθήκευση" + }, + "cancel": { + "message": "Ακύρωση" + }, + "delete": { + "message": "Διαγραφή" + }, + "favorite": { + "message": "Αγαπημένο" + }, + "edit": { + "message": "Επεξεργασία" + }, + "authenticatorKeyTotp": { + "message": "Κλειδί επαλήθευσης (TOTP)" + }, + "folder": { + "message": "Φάκελος" + }, + "newCustomField": { + "message": "Νέο Προσαρμοσμένο Πεδίο" + }, + "value": { + "message": "Τιμή" + }, + "dragToSort": { + "message": "Σύρετε για ταξινόμηση" + }, + "cfTypeText": { + "message": "Κείμενο" + }, + "cfTypeHidden": { + "message": "Κρυφό" + }, + "cfTypeBoolean": { + "message": "Δυαδικό" + }, + "cfTypeLinked": { + "message": "Συνδεδεμένο", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Συνδεδεμένη τιμή", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Αφαίρεση" + }, + "nameRequired": { + "message": "Απαιτείται όνομα." + }, + "addedItem": { + "message": "Προστέθηκε στοιχείο" + }, + "editedItem": { + "message": "Επεξεργασμένο στοιχείο" + }, + "deleteItem": { + "message": "Διαγραφή Στοιχείου" + }, + "deleteFolder": { + "message": "Διαγραφή Φακέλου" + }, + "deleteAttachment": { + "message": "Διαγραφή Συνημμένου" + }, + "deleteItemConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το στοιχείο;" + }, + "deletedItem": { + "message": "Διαγραμμένο στοιχείο" + }, + "overwritePasswordConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αντικαταστήσετε τον τρέχον κωδικό πρόσβασης;" + }, + "overwriteUsername": { + "message": "Αντικατάσταση Username" + }, + "overwriteUsernameConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αντικαταστήσετε το τρέχον username;" + }, + "noneFolder": { + "message": "Χωρίς Φάκελο", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Προσθήκη Φακέλου" + }, + "editFolder": { + "message": "Επεξεργασία Φακέλου" + }, + "regeneratePassword": { + "message": "Επαναδημιουργία Κωδικού" + }, + "copyPassword": { + "message": "Αντιγραφή Κωδικού" + }, + "copyUri": { + "message": "Αντιγραφή URI" + }, + "copyVerificationCodeTotp": { + "message": "Αντιγραφή κωδικού επαλήθευσης (TOTP)" + }, + "length": { + "message": "Μήκος" + }, + "numWords": { + "message": "Αριθμός Λέξεων" + }, + "wordSeparator": { + "message": "Διαχωριστής Λέξεων" + }, + "capitalize": { + "message": "Κεφαλαιοποίηση", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Συμπερίληψη Αριθμών" + }, + "close": { + "message": "Κλείσιμο" + }, + "minNumbers": { + "message": "Ελάχιστα Αριθμητικά Ψηφία" + }, + "minSpecial": { + "message": "Ελάχιστο Ειδικών Χαρακτήρων", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Αποφυγή Αμφιλεγόμενων Χαρακτήρων" + }, + "searchCollection": { + "message": "Αναζήτηση στη Συλλογή" + }, + "searchFolder": { + "message": "Αναζήτηση στον Φάκελο" + }, + "searchFavorites": { + "message": "Αναζήτηση στα Αγαπημένα" + }, + "searchType": { + "message": "Τύπος Αναζήτησης", + "description": "Search item type" + }, + "newAttachment": { + "message": "Προσθήκη Νέου Συνημμένου" + }, + "deletedAttachment": { + "message": "Το συνημμένο διαγράφηκε" + }, + "deleteAttachmentConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το συνημμένο;" + }, + "attachmentSaved": { + "message": "Το συννημένο έχει αποθηκευτεί." + }, + "file": { + "message": "Αρχείο" + }, + "selectFile": { + "message": "Επιλέξτε ένα αρχείο." + }, + "maxFileSize": { + "message": "Το μέγιστο μέγεθος αρχείου είναι 500 MB." + }, + "updateKey": { + "message": "Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη λειτουργία μέχρι να ενημερώσετε το κλειδί κρυπτογράφησης." + }, + "editedFolder": { + "message": "Επεξεργασμένος φάκελος" + }, + "addedFolder": { + "message": "Προστέθηκε φάκελος" + }, + "deleteFolderConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό τον φάκελο;" + }, + "deletedFolder": { + "message": "Διεγραμμένος φάκελος" + }, + "loginOrCreateNewAccount": { + "message": "Συνδεθείτε ή δημιουργήστε ένα νέο λογαριασμό για να αποκτήσετε πρόσβαση στο ασφαλές vault σας." + }, + "createAccount": { + "message": "Δημιουργία Λογαριασμού" + }, + "logIn": { + "message": "Είσοδος" + }, + "submit": { + "message": "Υποβολή" + }, + "masterPass": { + "message": "Κύριος Κωδικός" + }, + "masterPassDesc": { + "message": "Ο κύριος κωδικός είναι ο κωδικός που χρησιμοποιείτε για την πρόσβαση στο vault σας. Είναι πολύ σημαντικό να μην ξεχάσετε τον κύριο κωδικό. Δεν υπάρχει τρόπος να ανακτήσετε τον κωδικό σε περίπτωση που τον ξεχάσετε." + }, + "masterPassHintDesc": { + "message": "Η υπόδειξη κύριου κωδικού μπορεί να σας βοηθήσει να θυμηθείτε τον κωδικό σας αν τον ξεχάσετε." + }, + "reTypeMasterPass": { + "message": "Επαλήθευση Κύριου Κωδικού" + }, + "masterPassHint": { + "message": "Υπόδειξη Κύριου Κωδικού (προαιρετικό)" + }, + "settings": { + "message": "Ρυθμίσεις" + }, + "passwordHint": { + "message": "Υπόδειξη Κωδικού" + }, + "enterEmailToGetHint": { + "message": "Εισαγάγετε τη διεύθυνση email του λογαριασμού σας για να λάβετε την υπόδειξη του κύριου κωδικού." + }, + "getMasterPasswordHint": { + "message": "Λήψη υπόδειξης κύριου κωδικού" + }, + "emailRequired": { + "message": "Απαιτείται διεύθυνση e-mail." + }, + "invalidEmail": { + "message": "Μη έγκυρη διεύθυνση e-mail." + }, + "masterPassRequired": { + "message": "Απαιτείται κύριος κωδικός πρόσβασης." + }, + "masterPassLength": { + "message": "Ο κύριος κωδικός πρέπει να έχει μήκος τουλάχιστον 8 χαρακτήρες." + }, + "masterPassDoesntMatch": { + "message": "Η επιβεβαίωση κύριου κωδικού δεν ταιριάζει." + }, + "newAccountCreated": { + "message": "Ο λογαριασμός σας έχει δημιουργηθεί! Τώρα μπορείτε να συνδεθείτε." + }, + "masterPassSent": { + "message": "Σας στείλαμε ένα email με την υπόδειξη του κύριου κωδικού." + }, + "unexpectedError": { + "message": "Παρουσιάστηκε ένα μη αναμενόμενο σφάλμα." + }, + "itemInformation": { + "message": "Πληροφορίες Στοιχείου" + }, + "noItemsInList": { + "message": "Δεν υπάρχουν στοιχεία στη λίστα." + }, + "sendVerificationCode": { + "message": "Στείλτε έναν κωδικό επαλήθευσης στο email σας" + }, + "sendCode": { + "message": "Αποστολή Κωδικού" + }, + "codeSent": { + "message": "Ο Κωδικός Στάλθηκε" + }, + "verificationCode": { + "message": "Κωδικός Επαλήθευσης" + }, + "confirmIdentity": { + "message": "Επιβεβαιώστε την ταυτότητα σας για να συνεχίσετε." + }, + "verificationCodeRequired": { + "message": "Απαιτείται ο κωδικός επαλήθευσης." + }, + "invalidVerificationCode": { + "message": "Μη έγκυρος κωδικός επαλήθευσης" + }, + "continue": { + "message": "Συνέχεια" + }, + "enterVerificationCodeApp": { + "message": "Εισάγετε τον 6ψήφιο κωδικό από την εφαρμογή επαλήθευσης." + }, + "enterVerificationCodeEmail": { + "message": "Εισάγετε τον 6ψήφιο κωδικό επαλήθευσης τον οποίο λάβατε στο $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Εστάλη email επαλήθευσης στο $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Να με θυμάσαι" + }, + "sendVerificationCodeEmailAgain": { + "message": "Επανάληψη αποστολής κωδικού επαλήθευσης στο e-mail" + }, + "useAnotherTwoStepMethod": { + "message": "Χρήση άλλης μεθόδου εισόδου δύο παραγόντων" + }, + "insertYubiKey": { + "message": "Τοποθετήστε το YubiKey στη θύρα USB του υπολογιστή σας και έπειτα κάντε κλικ στο κουμπί του." + }, + "insertU2f": { + "message": "Εισάγετε το κλειδί ασφαλείας στη θύρα USB του υπολογιστή σας. Αν έχει κουμπί, πατήστε το." + }, + "recoveryCodeDesc": { + "message": "Έχετε χάσει την πρόσβαση σε όλους τους παρόχους δύο παραγόντων; Χρησιμοποιήστε τον κωδικό ανάκτησης για να απενεργοποιήσετε όλους τους παρόχους δύο παραγόντων από το λογαριασμό σας." + }, + "recoveryCodeTitle": { + "message": "Κωδικός Ανάκτησης" + }, + "authenticatorAppTitle": { + "message": "Εφαρμογή Επαλήθευσης" + }, + "authenticatorAppDesc": { + "message": "Χρησιμοποιήστε μια εφαρμογή επαλήθευσης (όπως το Authy ή Google Authenticator) για να δημιουργήσετε κωδικούς επαλήθευσης με βάση το χρόνο.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Κλειδί ασφαλείας YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Χρησιμοποιήστε ένα YubiKey για να αποκτήσετε πρόσβαση στο λογαριασμό σας. Λειτουργεί με συσκευές σειράς YubiKey 4, 4 Nano, 4C και συσκευές NEO." + }, + "duoDesc": { + "message": "Επαληθεύστε με το Duo Security χρησιμοποιώντας την εφαρμογή Duo Mobile, SMS, τηλεφωνική κλήση ή κλειδί ασφαλείας U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Επαληθεύστε με το Duo Security για τον οργανισμό σας χρησιμοποιώντας την εφαρμογή Duo Mobile, μήνυμα SMS, τηλεφωνική κλήση ή κλειδί ασφαλείας U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Χρησιμοποιήστε οποιοδήποτε κλειδί ασφαλείας WebAuthn για να αποκτήσετε πρόσβαση στο λογαριασμό σας." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Οι κωδικοί επαλήθευσης θα σας αποσταλούν μέσω ηλεκτρονικού ταχυδρομείου." + }, + "loginUnavailable": { + "message": "Σύνδεση μη διαθέσιμη" + }, + "noTwoStepProviders": { + "message": "Αυτός ο λογαριασμός έχει δυνατότητα σύνδεσης σε δύο βήματα, ωστόσο, από αυτήν τη συσκευή δεν υποστηρίζεται κανένας από τους διαμορφωμένους παροχείς δύο βημάτων." + }, + "noTwoStepProviders2": { + "message": "Προσθέστε επιπλέον παρόχους που υποστηρίζονται καλύτερα σε όλες τις συσκευές (όπως μια εφαρμογή επαλήθευσης)." + }, + "twoStepOptions": { + "message": "Επιλογές Σύνδεσης Δύο Παραγόντων" + }, + "selfHostedEnvironment": { + "message": "Αυτο-Φιλοξενούμενο Περιβάλλον" + }, + "selfHostedEnvironmentFooter": { + "message": "Καθορίστε τη βασική διεύθυνση URL, της εγκατάστασης του Bitwarden που φιλοξενείται στο χώρο σας." + }, + "customEnvironment": { + "message": "Προσαρμοσμένο περιβάλλον" + }, + "customEnvironmentFooter": { + "message": "Για προχωρημένους χρήστες. Μπορείτε να ορίσετε ανεξάρτητα τη βασική διεύθυνση URL κάθε υπηρεσίας." + }, + "baseUrl": { + "message": "URL Διακομιστή" + }, + "apiUrl": { + "message": "URL Διακομιστή API" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "URL Ταυτότητας Διακομιστή" + }, + "notificationsUrl": { + "message": "Ειδοποιήσεις Διεύθυνσης URL Διακομιστή" + }, + "iconsUrl": { + "message": "Εικονίδια διακομιστή URL" + }, + "environmentSaved": { + "message": "Οι διευθύνσεις URL περιβάλλοντος έχουν αποθηκευτεί." + }, + "ok": { + "message": "Οκ" + }, + "yes": { + "message": "Ναι" + }, + "no": { + "message": "Όχι" + }, + "overwritePassword": { + "message": "Αντικατάσταση Κωδικού Πρόσβασης" + }, + "learnMore": { + "message": "Μάθετε περισσότερα" + }, + "featureUnavailable": { + "message": "Μη Διαθέσιμο Χαρακτηριστικό" + }, + "loggedOut": { + "message": "Αποσύνδεση" + }, + "loginExpired": { + "message": "Η περίοδος σύνδεσης σας έχει λήξει." + }, + "logOutConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;" + }, + "logOut": { + "message": "Αποσύνδεση" + }, + "addNewLogin": { + "message": "Προσθήκη Νέας Σύνδεσης" + }, + "addNewItem": { + "message": "Προσθήκη Νέου Στοιχείου" + }, + "addNewFolder": { + "message": "Προσθήκη Νέου Φακέλου" + }, + "view": { + "message": "Προβολή" + }, + "account": { + "message": "Λογαριασμός" + }, + "loading": { + "message": "Φόρτωση..." + }, + "lockVault": { + "message": "Κλείδωμα Vault" + }, + "passwordGenerator": { + "message": "Γεννήτρια Κωδικού" + }, + "contactUs": { + "message": "Επικοινωνία" + }, + "getHelp": { + "message": "Ζητήστε Βοήθεια" + }, + "fileBugReport": { + "message": "Υποβολή Αναφοράς Σφάλματος" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Ακολουθήστε μας" + }, + "syncVault": { + "message": "Συγχρονισμός Vault" + }, + "changeMasterPass": { + "message": "Αλλαγή Κύριου Κωδικού" + }, + "changeMasterPasswordConfirmation": { + "message": "Μπορείτε να αλλάξετε τον κύριο κωδικό στο bitwarden.com. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "fingerprintPhrase": { + "message": "Φράση Δακτυλικών Αποτυπωμάτων", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Η Φράση δακτυλικών αποτυπωμάτων του λογαριασμού σας", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Πηγαίνετε στο Web Vault" + }, + "getMobileApp": { + "message": "Λάβετε την Εφαρμογή Κινητού" + }, + "getBrowserExtension": { + "message": "Λάβετε την Επέκταση Browser" + }, + "syncingComplete": { + "message": "Ο συγχρονισμός ολοκληρώθηκε" + }, + "syncingFailed": { + "message": "Ο συγχρονισμός απέτυχε" + }, + "yourVaultIsLocked": { + "message": "Το vault σας είναι κλειδωμένο. Επαληθεύστε τον κύριο κωδικό πρόσβασης για να συνεχίσετε." + }, + "unlock": { + "message": "Ξεκλείδωμα" + }, + "loggedInAsOn": { + "message": "Συνδεθήκατε ως $EMAIL$ στο $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Μη έγκυρος κύριος κωδικός πρόσβασης" + }, + "twoStepLoginConfirmation": { + "message": "Η σύνδεση σε δύο βήματα καθιστά ασφαλέστερο τον λογαριασμό σας, απαιτώντας να επαληθεύσετε τα στοιχεία σας με μια άλλη συσκευή, όπως κλειδί ασφαλείας, εφαρμογή επαλήθευσης ταυτότητας, μήνυμα SMS, τηλεφωνική κλήση ή email. Μπορείτε να ενεργοποιήσετε τη σύνδεση σε δύο βήματα στο bitwarden.com. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "twoStepLogin": { + "message": "Σύνδεση σε δύο βήματα" + }, + "vaultTimeout": { + "message": "Χρόνος Λήξης Vault" + }, + "vaultTimeoutDesc": { + "message": "Επιλέξτε πότε θα λήξει το vault και πραγματοποιήστε την επιλεγμένη ενέργεια." + }, + "immediately": { + "message": "Άμεσα" + }, + "tenSeconds": { + "message": "10 δευτερόλεπτα" + }, + "twentySeconds": { + "message": "20 δευτερόλεπτα" + }, + "thirtySeconds": { + "message": "30 δευτερόλεπτα" + }, + "oneMinute": { + "message": "1 λεπτό" + }, + "twoMinutes": { + "message": "2 λεπτά" + }, + "fiveMinutes": { + "message": "5 λεπτά" + }, + "fifteenMinutes": { + "message": "15 λεπτά" + }, + "thirtyMinutes": { + "message": "30 λεπτά" + }, + "oneHour": { + "message": "1 ώρα" + }, + "fourHours": { + "message": "4 ώρες" + }, + "onIdle": { + "message": "Κατά την Αδράνεια Συστήματος" + }, + "onSleep": { + "message": "Κατά την Αναμονή Συστήματος" + }, + "onLocked": { + "message": "Κατά το Κλείδωμα Συστήματος" + }, + "onRestart": { + "message": "Κατά την Επανεκκίνηση" + }, + "never": { + "message": "Ποτέ" + }, + "security": { + "message": "Ασφάλεια" + }, + "clearClipboard": { + "message": "Εκκαθάριση Πρόχειρου", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Αυτόματη εκκαθάριση αντιγραμμένων τιμών προχείρου.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Απενεργοποίηση Εικονιδίων Ιστοσελίδας" + }, + "disableFaviconDesc": { + "message": "Τα εικονίδια ιστοσελίδων παρέχουν μια αναγνωρίσιμη εικόνα δίπλα σε κάθε στοιχείο σύνδεσης της λίστας σας." + }, + "enableMinToTray": { + "message": "Ελαχιστοποίηση σε Εικονίδιο Δίσκου" + }, + "enableMinToTrayDesc": { + "message": "Όταν ελαχιστοποιείτε το παράθυρο, εμφανίζεται ένα εικονίδιο στο δίσκο συστήματος αντί αυτού." + }, + "enableMinToMenuBar": { + "message": "Ελαχιστοποίηση στη γραμμή μενού" + }, + "enableMinToMenuBarDesc": { + "message": "Όταν ελαχιστοποιείται το παράθυρο, εμφανίζεται ένα εικονίδιο στη γραμμή μενού." + }, + "enableCloseToTray": { + "message": "Κλείσιμο στο Εικονίδιο Δίσκου" + }, + "enableCloseToTrayDesc": { + "message": "Όταν κλείνετε το παράθυρο, εμφανίζεται ένα εικονίδιο στο δίσκο συστήματος αντί αυτού." + }, + "enableCloseToMenuBar": { + "message": "Κλείσιμο στη γραμμή μενού" + }, + "enableCloseToMenuBarDesc": { + "message": "Κατά το κλείσιμο του παραθύρου, εμφανίζεται ένα εικονίδιο στη γραμμή μενού." + }, + "enableTray": { + "message": "Ενεργοποίηση Εικονιδίου Δίσκου" + }, + "enableTrayDesc": { + "message": "Να εμφανίζεται πάντα ένα εικονίδιο στο δίσκο συστήματος." + }, + "startToTray": { + "message": "Έναρξη στο εικονίδιο δίσκου" + }, + "startToTrayDesc": { + "message": "Όταν ξεκινήσει η εφαρμογή, εμφανίζεται μόνο ένα εικονίδιο στο δίσκο συστήματος." + }, + "startToMenuBar": { + "message": "Έναρξη στη γραμμή μενού" + }, + "startToMenuBarDesc": { + "message": "Όταν ξεκινήσει η εφαρμογή, εμφανίζεται μόνο ένα εικονίδιο στη γραμμή μενού." + }, + "openAtLogin": { + "message": "Εκκίνηση αυτόματα κατά τη σύνδεση" + }, + "openAtLoginDesc": { + "message": "Εκκίνηση της εφαρμογής Bitwarden Desktop αυτόματα κατά τη σύνδεση." + }, + "alwaysShowDock": { + "message": "Να εμφανίζεται πάντα στο Dock" + }, + "alwaysShowDockDesc": { + "message": "Εμφάνιση του εικονιδίου Bitwarden στο Dock ακόμα και όταν ελαχιστοποιείται στη γραμμή μενού." + }, + "confirmTrayTitle": { + "message": "Επιβεβαίωση απενεργοποίησης συστήματος" + }, + "confirmTrayDesc": { + "message": "Η απενεργοποίηση αυτής της ρύθμισης θα απενεργοποιήσει επίσης όλες τις άλλες ρυθμίσεις που σχετίζονται με το δίσκο." + }, + "language": { + "message": "Γλώσσα" + }, + "languageDesc": { + "message": "Αλλάξτε τη γλώσσα που χρησιμοποιείται από την εφαρμογή. Απαιτείται επανεκκίνηση." + }, + "theme": { + "message": "Θέμα" + }, + "themeDesc": { + "message": "Αλλαγή χρώματος θέματος εφαρμογής." + }, + "dark": { + "message": "Σκοτεινό", + "description": "Dark color" + }, + "light": { + "message": "Φωτεινό", + "description": "Light color" + }, + "copy": { + "message": "Αντιγραφή", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Έλεγχος Για Ενημερώσεις" + }, + "version": { + "message": "Έκδοση $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Κάντε επανεκκίνηση για ενημέρωση" + }, + "restartToUpdateDesc": { + "message": "Η έκδοση $VERSION_NUM$ είναι έτοιμη για εγκατάσταση. Θα πρέπει να επανεκκινήσετε την εφαρμογή για να ολοκληρωθεί η εγκατάσταση. Θέλετε να κάνετε επανεκκίνηση και ενημέρωση τώρα;", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Διαθέσιμη Ενημέρωση" + }, + "updateAvailableDesc": { + "message": "Βρέθηκε μια ενημέρωση. Θέλετε να την κατεβάσετε τώρα;" + }, + "restart": { + "message": "Επανεκκίνηση" + }, + "later": { + "message": "Αργότερα" + }, + "noUpdatesAvailable": { + "message": "Δεν υπάρχουν προς το παρόν διαθέσιμες ενημερώσεις. Χρησιμοποιείτε την τελευταία έκδοση." + }, + "updateError": { + "message": "Σφάλμα Ενημέρωσης" + }, + "unknown": { + "message": "Άγνωστο" + }, + "copyUsername": { + "message": "Αντιγραφή Ονόματος Χρήστη" + }, + "copyNumber": { + "message": "Αντιγραφή Αριθμού", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Αντιγραφή Κωδικού Ασφαλείας", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Συνδρομή Premium" + }, + "premiumManage": { + "message": "Διαχείριση Συνδρομής" + }, + "premiumManageAlert": { + "message": "Μπορείτε να διαχειριστείτε την ιδιότητά σας ως μέλος στο bitwarden.com web vault. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "premiumRefresh": { + "message": "Ανανέωση Συνδρομής" + }, + "premiumNotCurrentMember": { + "message": "Δεν είστε premium μέλος." + }, + "premiumSignUpAndGet": { + "message": "Εγγραφείτε για μια premium συνδρομή και λάβετε:" + }, + "premiumSignUpStorage": { + "message": "1 GB κρυπτογραφημένο αποθηκευτικό χώρο για συνημμένα αρχεία." + }, + "premiumSignUpTwoStep": { + "message": "Πρόσθετες επιλογές σύνδεσης δύο βημάτων, όπως το YubiKey, το FIDO U2F και το Duo." + }, + "premiumSignUpReports": { + "message": "Ασφάλεια κωδικών, υγιής λογαριασμός και αναφορές παραβίασης δεδομένων για να διατηρήσετε ασφαλή τη λίστα σας." + }, + "premiumSignUpTotp": { + "message": "TOTP κωδικός επαλήθευσης (2FA) για συνδέσεις στη λίστα σας." + }, + "premiumSignUpSupport": { + "message": "Προτεραιότητα υποστήριξης πελατών." + }, + "premiumSignUpFuture": { + "message": "Όλα τα μελλοντικά χαρακτηριστικά premium. Περισσότερα σύντομα!" + }, + "premiumPurchase": { + "message": "Αγορά Premium έκδοσης" + }, + "premiumPurchaseAlert": { + "message": "Μπορείτε να αγοράσετε συνδρομή premium στο bitwarden.com web vault. Θέλετε να επισκεφθείτε την ιστοσελίδα τώρα;" + }, + "premiumCurrentMember": { + "message": "Είστε ένα premium μέλος!" + }, + "premiumCurrentMemberThanks": { + "message": "Ευχαριστούμε που υποστηρίζετε το Bitwarden." + }, + "premiumPrice": { + "message": "Όλα για μόνο $PRICE$ /έτος!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Επιτυχής ανανέωση" + }, + "passwordHistory": { + "message": "Ιστορικό Κωδικού" + }, + "clear": { + "message": "Εκκαθάριση", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Δεν υπάρχουν κωδικοί στη λίστα." + }, + "undo": { + "message": "Αναίρεση" + }, + "redo": { + "message": "Ακύρωση αναίρεσης" + }, + "cut": { + "message": "Αποκοπή", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Επικόλληση", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Επιλογή Όλων" + }, + "zoomIn": { + "message": "Μεγέθυνση" + }, + "zoomOut": { + "message": "Σμίκρυνση" + }, + "resetZoom": { + "message": "Επαναφορά Μεγέθυνσης" + }, + "toggleFullScreen": { + "message": "Εναλλαγή σε Πλήρη Οθόνη" + }, + "reload": { + "message": "Επαναφόρτωση" + }, + "toggleDevTools": { + "message": "Εναλλαγή σε Εργαλεία Προγραμματιστή" + }, + "minimize": { + "message": "Ελαχιστοποίηση", + "description": "Minimize window" + }, + "zoom": { + "message": "Μεγέθυνση" + }, + "bringAllToFront": { + "message": "Φέρτε τα όλα σε πρώτο πλάνο", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Σχετικά με Birwarden" + }, + "services": { + "message": "Υπηρεσίες" + }, + "hideBitwarden": { + "message": "Απόκρυψη Bitwarden" + }, + "hideOthers": { + "message": "Απόκρυψη Άλλων" + }, + "showAll": { + "message": "Εμφάνιση Όλων" + }, + "quitBitwarden": { + "message": "Έξοδος Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ αντιγράφηκε", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Βοήθεια" + }, + "window": { + "message": "Παράθυρο" + }, + "checkPassword": { + "message": "Ελέγξτε εάν ο κωδικός έχει εκτεθεί." + }, + "passwordExposed": { + "message": "Αυτός ο κωδικός πρόσβασης έχει εκτεθεί $VALUE$ φορά (ές) σε παραβιάσεις δεδομένων. Πρέπει να τον αλλάξετε.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Αυτός ο κωδικός δεν βρέθηκε σε κάποια γνωστή διαρροή δεδομένων. Θα πρέπει να είναι ασφαλής για χρήση." + }, + "baseDomain": { + "message": "Βασικός τομέας", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Όνομα τομέα", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Ακριβής" + }, + "startsWith": { + "message": "Έναρξη με" + }, + "regEx": { + "message": "Κανονική έκφραση", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Εντοπισμός Αντιστοίχισης", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Προεπιλεγμένος εντοπισμός αντιστοίχισης", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Επιλογές Εναλλαγής" + }, + "organization": { + "message": "Οργανισμός", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Προεπιλογή" + }, + "exit": { + "message": "Έξοδος" + }, + "showHide": { + "message": "Εμφάνιση / Απόκρυψη", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Απόκρυψη στο Δίσκο" + }, + "alwaysOnTop": { + "message": "Πάντα στη Κορυφή", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Ενημερώθηκε", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Ο Κωδικός Ενημερώθηκε", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Εξαγωγή Vault" + }, + "fileFormat": { + "message": "Μορφή Αρχείου" + }, + "warning": { + "message": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Επιβεβαίωση εξαγωγής Vault" + }, + "exportWarningDesc": { + "message": "Αυτή η εξαγωγή περιέχει τα δεδομένα σε μη κρυπτογραφημένη μορφή. Δεν πρέπει να αποθηκεύετε ή να στείλετε το εξαγόμενο αρχείο μέσω μη ασφαλών τρόπων (όπως μέσω email). Διαγράψτε το αμέσως μόλις τελειώσετε με τη χρήση του." + }, + "encExportKeyWarningDesc": { + "message": "Αυτή η εξαγωγή κρυπτογραφεί τα δεδομένα σας χρησιμοποιώντας το κλειδί κρυπτογράφησης του λογαριασμού σας. Εάν ποτέ περιστρέψετε το κλειδί κρυπτογράφησης του λογαριασμού σας, θα πρέπει να κάνετε εξαγωγή ξανά, καθώς δεν θα μπορείτε να αποκρυπτογραφήσετε αυτό το αρχείο εξαγωγής." + }, + "encExportAccountWarningDesc": { + "message": "Τα κλειδιά κρυπτογράφησης λογαριασμού είναι μοναδικά για κάθε λογαριασμό χρήστη Bitwarden, οπότε δεν μπορείτε να εισάγετε μια κρυπτογραφημένη εξαγωγή σε διαφορετικό λογαριασμό." + }, + "noOrganizationsList": { + "message": "Δεν συμμετέχετε σε κάποιον οργανισμό. Οι οργανισμοί επιτρέπουν την ασφαλή κοινοποίηση στοιχείων με άλλους χρήστες." + }, + "noCollectionsInList": { + "message": "Δεν υπάρχουν στοιχεία για εμφάνιση." + }, + "ownership": { + "message": "Ιδιοκτησία" + }, + "whoOwnsThisItem": { + "message": "Ποιος κατέχει αυτό το στοιχείο;" + }, + "strong": { + "message": "Ισχυρός", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Καλός", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Αδύναμος", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Αδύναμος Κύριος Κωδικός" + }, + "weakMasterPasswordDesc": { + "message": "Ο κύριος κωδικός που έχετε επιλέξει είναι αδύναμος. Θα πρέπει να χρησιμοποιήσετε έναν ισχυρό κύριο κωδικό (ή μια φράση) για την κατάλληλη προστασία του λογαριασμού Bitwarden. Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε αυτόν τον κύριο κωδικό;" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Ξεκλείδωμα με PIN" + }, + "setYourPinCode": { + "message": "Ορίστε τον κωδικό PIN για να ξεκλειδώσετε το Bitwarden. Οι ρυθμίσεις PIN θα επαναρυθμιστούν αν αποσυνδεθείτε πλήρως από την εφαρμογή." + }, + "pinRequired": { + "message": "Απαιτείται κωδικός PIN." + }, + "invalidPin": { + "message": "Μη έγκυρος κωδικός PIN." + }, + "unlockWithWindowsHello": { + "message": "Ξεκλειδώστε με το Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Επαληθεύστε για το Bitwarden." + }, + "unlockWithTouchId": { + "message": "Ξεκλείδωμα με Touch ID" + }, + "touchIdConsentMessage": { + "message": "Ξεκλειδώστε το vault σας" + }, + "noAutoPromptWindowsHello": { + "message": "Μην προτρέξετε για τα Windows Hello κατά την εκκίνηση." + }, + "noAutoPromptTouchId": { + "message": "Να μην ζητηθεί το Touch ID κατά την εκκίνηση." + }, + "lockWithMasterPassOnRestart": { + "message": "Κλείδωμα με τον κύριο κωδικό πρόσβασης κατά την επανεκκίνηση" + }, + "preferences": { + "message": "Προτιμήσεις" + }, + "enableMenuBar": { + "message": "Ενεργοποίηση Εικονιδίου Μπάρας Μενού" + }, + "enableMenuBarDesc": { + "message": "Να εμφανίζεται πάντα το εικονίδιο στη μπάρα μενού." + }, + "hideToMenuBar": { + "message": "Απόκρυψη στη Μπάρα Μενού" + }, + "selectOneCollection": { + "message": "Πρέπει να επιλέξετε τουλάχιστον μία συλλογή." + }, + "premiumUpdated": { + "message": "Έχετε αναβαθμίσει σε premium." + }, + "restore": { + "message": "Επαναφορά" + }, + "premiumManageAlertAppStore": { + "message": "Μπορείτε να διαχειριστείτε τη συνδρομή σας από το App Store. Θέλετε να επισκεφθείτε το App Store τώρα;" + }, + "legal": { + "message": "Νομικά", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Όροι Χρήσης" + }, + "privacyPolicy": { + "message": "Πολιτική Απορρήτου" + }, + "unsavedChangesConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να φύγετε; Εάν φύγετε τώρα, οι τρέχουσες πληροφορίες σας δεν θα αποθηκευτούν." + }, + "unsavedChangesTitle": { + "message": "Μη αποθηκευμένες αλλαγές" + }, + "clone": { + "message": "Κλώνος" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Μία ή περισσότερες πολιτικές του οργανισμού επηρεάζουν τις ρυθμίσεις της γεννήτριας." + }, + "vaultTimeoutAction": { + "message": "Ενέργεια Χρόνου Λήξης Vault" + }, + "vaultTimeoutActionLockDesc": { + "message": "Ένα κλειδωμένο vault απαιτεί να εισάγετε ξανά τον κύριο κωδικό για να αποκτήσετε ξανά πρόσβαση σε αυτόν." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Ένα αποσυνδεδεμένο vault απαιτεί να κάνετε ξανά έλεγχο ταυτότητας για να αποκτήσετε πρόσβαση σε αυτό." + }, + "lock": { + "message": "Κλείδωμα", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Κάδος Απορριμάτων", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Αναζήτηση Κάδου" + }, + "permanentlyDeleteItem": { + "message": "Μόνιμη Διαγραφή Αντικειμένου" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα αυτό το στοιχείο;" + }, + "permanentlyDeletedItem": { + "message": "Μόνιμα Διεγραμμένο Στοιχείο" + }, + "restoreItem": { + "message": "Ανάκτηση Στοιχείου" + }, + "restoreItemConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να ανακτήσετε αυτό το στοιχείο;" + }, + "restoredItem": { + "message": "Στοιχείο που έχει Ανακτηθεί" + }, + "permanentlyDelete": { + "message": "Μόνιμη Διαγραφή" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Η αποσύνδεση θα καταργήσει όλη την πρόσβαση στο vault σας και απαιτεί online έλεγχο ταυτότητας μετά το χρονικό όριο λήξης. Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε αυτήν τη ρύθμιση;" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Επιβεβαίωση Ενέργειας Χρονικού Ορίου" + }, + "enterpriseSingleSignOn": { + "message": "Ενιαία είσοδος για επιχειρήσεις" + }, + "setMasterPassword": { + "message": "Ορισμός Κύριου Κωδικού" + }, + "ssoCompleteRegistration": { + "message": "Για να ολοκληρώσετε τη σύνδεση με SSO, ορίστε έναν κύριο κωδικό πρόσβασης για πρόσβαση και προστασία του vault σας." + }, + "newMasterPass": { + "message": "Νέος Κύριος Κωδικός" + }, + "confirmNewMasterPass": { + "message": "Επιβεβαίωση Νέου Κύριου Κωδικού" + }, + "masterPasswordPolicyInEffect": { + "message": "Σε μία ή περισσότερες πολιτικές του οργανισμού απαιτείται ο κύριος κωδικός να πληρεί τις ακόλουθες απαιτήσεις:" + }, + "policyInEffectMinComplexity": { + "message": "Ελάχιστος βαθμός πολυπλοκότητας: $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Ελάχιστο μήκος: $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Να περιέχει έναν ή περισσότερους κεφαλαίους χαρακτήρες" + }, + "policyInEffectLowercase": { + "message": "Να περιέχει έναν ή περισσότερους πεζούς χαρακτήρες" + }, + "policyInEffectNumbers": { + "message": "Να περιέχει έναν ή περισσότερους αριθμούς" + }, + "policyInEffectSpecial": { + "message": "Να περιέχει έναν ή περισσότερους από τους ακόλουθους ειδικούς χαρακτήρες $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Ο νέος κύριος κωδικός δεν πληροί τις απαιτήσεις πολιτικής." + }, + "acceptPolicies": { + "message": "Επιλέγοντας αυτό το πλαίσιο, συμφωνείτε με τα εξής:" + }, + "acceptPoliciesError": { + "message": "Οι Όροι Παροχής Υπηρεσιών και η Πολιτική Απορρήτου δεν έχουν αναγνωριστεί." + }, + "enableBrowserIntegration": { + "message": "Ενεργοποίηση ενσωμάτωσης περιηγητή" + }, + "enableBrowserIntegrationDesc": { + "message": "Η ενσωμάτωση του προγράμματος περιήγησης χρησιμοποιείται για βιομετρικά στοιχεία στο πρόγραμμα περιήγησης." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Η ενσωμάτωση του περιηγητή δεν υποστηρίζεται" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Δυστυχώς η ενσωμάτωση του προγράμματος περιήγησης υποστηρίζεται μόνο στην έκδοση Mac App Store για τώρα." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Η ενσωμάτωση του περιηγητή δεν υποστηρίζεται" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Δυστυχώς η ενσωμάτωση του προγράμματος περιήγησης, δεν υποστηρίζεται στην έκδοση Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Απαιτείται επαλήθευση για ολοκλήρωση περιηγητή" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Ενεργοποιήστε ένα πρόσθετο επίπεδο ασφάλειας απαιτώντας επικύρωση φράσης δακτυλικών αποτυπωμάτων κατά τη δημιουργία μιας σύνδεσης μεταξύ της επιφάνειας εργασίας σας και του προγράμματος περιήγησης. Όταν ενεργοποιηθεί, αυτό απαιτεί παρέμβαση χρήστη και επαλήθευση κάθε φορά που δημιουργείται σύνδεση." + }, + "approve": { + "message": "Έγκριση" + }, + "verifyBrowserTitle": { + "message": "Επαλήθευση σύνδεσης περιηγητή" + }, + "verifyBrowserDesc": { + "message": "Βεβαιωθείτε ότι το εμφανιζόμενο δακτυλικό αποτύπωμα είναι ταυτόσημο με το δακτυλικό αποτύπωμα που εμφανίζεται στην επέκταση του προγράμματος περιήγησης." + }, + "biometricsNotEnabledTitle": { + "message": "Η βιομετρική δεν είναι ενεργοποιημένη" + }, + "biometricsNotEnabledDesc": { + "message": "Η βιομετρική περιήγηση απαιτεί την ενεργοποίηση των βιομετρικών στοιχείων επιφάνειας εργασίας στις ρυθμίσεις πρώτα." + }, + "personalOwnershipSubmitError": { + "message": "Λόγω μιας Πολιτικής Επιχειρήσεων, δεν επιτρέπεται η αποθήκευση στοιχείων στο προσωπικό σας vault. Αλλάξτε την επιλογή Ιδιοκτησίας σε έναν οργανισμό και επιλέξτε από τις διαθέσιμες Συλλογές." + }, + "hintEqualsPassword": { + "message": "Η υπόδειξη κωδικού πρόσβασης, δεν μπορεί να είναι η ίδια με τον κωδικό πρόσβασης σας." + }, + "personalOwnershipPolicyInEffect": { + "message": "Μια πολιτική του οργανισμού, επηρεάζει τις επιλογές ιδιοκτησίας σας." + }, + "allSends": { + "message": "Όλα τα Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Αρχείο" + }, + "sendTypeText": { + "message": "Κείμενο" + }, + "searchSends": { + "message": "Αναζήτηση Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Επεξεργασία Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Το Vault μου" + }, + "text": { + "message": "Κείμενο" + }, + "deletionDate": { + "message": "Ημερομηνία διαγραφής" + }, + "deletionDateDesc": { + "message": "Το Send θα διαγραφεί οριστικά την καθορισμένη ημερομηνία και ώρα.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Ημερομηνία Λήξης" + }, + "expirationDateDesc": { + "message": "Εάν οριστεί, η πρόσβαση σε αυτό το Send θα λήξει την καθορισμένη ημερομηνία και ώρα.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Μέγιστος Αριθμός Πρόσβασης" + }, + "maxAccessCountDesc": { + "message": "Εάν οριστεί, οι χρήστες δεν θα μπορούν πλέον να έχουν πρόσβαση σε αυτό το send μόλις επιτευχθεί ο μέγιστος αριθμός πρόσβασης.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Τρέχων Αριθμός Πρόσβασης" + }, + "disableSend": { + "message": "Απενεργοποιήστε αυτό το Send έτσι ώστε κανείς να μην μπορεί να έχει πρόσβαση σε αυτό.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Προαιρετικά απαιτείται κωδικός πρόσβασης για τους χρήστες για να έχουν πρόσβαση σε αυτό το Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Ιδιωτικές σημειώσεις σχετικά με αυτό το Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Σύνδεσμος Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Αποστολή Συνδέσμου", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Κατά την πρόσβαση στην αποστολή, απόκρυψη του κειμένου από προεπιλογή", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Το Send Δημιουργήθηκε", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Το Send Επεξεργάστηκε", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Το Send Διαγράφηκε", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Νέος Κωδικός" + }, + "whatTypeOfSend": { + "message": "Τι είδους Send είναι αυτό;", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Δημιουργήστε Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Το κείμενο που θέλετε να στείλετε." + }, + "sendFileDesc": { + "message": "Το αρχείο που θέλετε να στείλετε." + }, + "days": { + "message": "$DAYS$ ημέρες", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 ημέρα" + }, + "custom": { + "message": "Προσαρμοσμένο" + }, + "deleteSendConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το Send;", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Αντιγραφή συνδέσμου Send στο πρόχειρο", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Αντιγράψτε το σύνδεσμο, για να μοιραστείτε αυτό το Send στο πρόχειρο μου, κατά την αποθήκευση." + }, + "sendDisabled": { + "message": "Send Απενεργοποιημένο", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Λόγω μιας επιχειρηματικής πολιτικής, είστε σε θέση να διαγράψετε μόνο ένα υπάρχον Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Αντιγραφή συνδέσμου" + }, + "disabled": { + "message": "Απενεργοποιημένο" + }, + "maxAccessCountReached": { + "message": "Φτάσατε στον μέγιστο αριθμό πρόσβασης" + }, + "expired": { + "message": "Έληξε" + }, + "pendingDeletion": { + "message": "Εκκρεμεί διαγραφή" + }, + "webAuthnAuthenticate": { + "message": "Ταυτοποίηση WebAutn" + }, + "hideEmail": { + "message": "Απόκρυψη της διεύθυνσης email μου από τους παραλήπτες." + }, + "sendOptionsPolicyInEffect": { + "message": "Μία ή περισσότερες οργανωτικές πολιτικές επηρεάζουν τις επιλογές send σας." + }, + "emailVerificationRequired": { + "message": "Απαιτείται Επαλήθευση Email" + }, + "emailVerificationRequiredDesc": { + "message": "Πρέπει να επαληθεύσετε το email σας για να χρησιμοποιήσετε αυτή τη δυνατότητα." + }, + "passwordPrompt": { + "message": "Προτροπή νέου κωδικού πρόσβασης" + }, + "passwordConfirmation": { + "message": "Επιβεβαίωση κύριου κωδικού πρόσβασης" + }, + "passwordConfirmationDesc": { + "message": "Αυτή η ενέργεια προστατεύεται. Για να συνεχίσετε, πληκτρολογήστε ξανά τον κύριο κωδικό πρόσβασης για να επαληθεύσετε την ταυτότητά σας." + }, + "updatedMasterPassword": { + "message": "Ενημερώθηκε ο κύριος κωδικός πρόσβασης" + }, + "updateMasterPassword": { + "message": "Ενημερώστε τον κύριο κωδικό πρόσβασης" + }, + "updateMasterPasswordWarning": { + "message": "Ο Κύριος Κωδικός Πρόσβασής σας άλλαξε πρόσφατα από διαχειριστή στον οργανισμό σας. Για να αποκτήσετε πρόσβαση στο vault, πρέπει να τον ενημερώσετε τώρα. Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία σας, απαιτώντας από εσάς να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές για μία ώρα." + }, + "hours": { + "message": "Ώρες" + }, + "minutes": { + "message": "Λεπτά" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Οι πολιτικές του οργανισμού σας επηρεάζουν το χρονικό όριο vault σας. Το μέγιστο επιτρεπόμενο Χρονικό όριο Vault είναι $HOURS$ ώρα(ες) και $MINUTES$ λεπτό(ά)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Το χρονικό όριο του vault σας υπερβαίνει τους περιορισμούς που έχει ορίσει ο οργανισμός σας." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Αυτόματη Εγγραφή" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Αυτός ο οργανισμός έχει μια επιχειρηματική πολιτική που θα σας εγγράψει αυτόματα στην επαναφορά κωδικού. Η εγγραφή θα επιτρέψει στους διαχειριστές του οργανισμού να αλλάξουν τον κύριο κωδικό πρόσβασης σας." + }, + "vaultExportDisabled": { + "message": "Εξαγωγή vault Απενεργοποιημένη" + }, + "personalVaultExportPolicyInEffect": { + "message": "Μία ή περισσότερες οργανωτικές πολιτικές σας αποτρέπει από την εξαγωγή του προσωπικού vault." + }, + "addAccount": { + "message": "Προσθήκη Λογαριασμού" + }, + "removeMasterPassword": { + "message": "Αφαίρεση Κύριου Κωδικού Πρόσβασης" + }, + "removedMasterPassword": { + "message": "Ο κύριος κωδικός αφαιρέθηκε." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ χρησιμοποιεί SSO με έναν αυτοεξυπηρετητή κλειδιών. Ένας κύριος κωδικός πρόσβασης δεν απαιτείται πλέον για να συνδεθείτε για τα μέλη αυτού του οργανισμού.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Αποχώρηση από τον οργανισμό" + }, + "leaveOrganizationConfirmation": { + "message": "Είστε βέβαιοι ότι θέλετε να φύγετε από αυτόν τον οργανισμό;" + }, + "leftOrganization": { + "message": "Έχετε φύγει από τον οργανισμό." + }, + "ssoKeyConnectorUnavailable": { + "message": "Δεν είναι δυνατή η πρόσβαση στον σύνδεσμο κλειδιού, προσπαθήστε ξανά αργότερα." + }, + "lockAllVaults": { + "message": "Κλείδωμα Όλων Των Vault" + }, + "accountLimitReached": { + "message": "Δεν μπορούν να συνδεθούν περισσότεροι από 5 λογαριασμοί ταυτόχρονα." + }, + "accountPreferences": { + "message": "Προτιμήσεις" + }, + "appPreferences": { + "message": "Ρυθμίσεις Εφαρμογής (Όλοι Οι Λογαριασμοί)" + }, + "accountSwitcherLimitReached": { + "message": "Συμπληρώθηκε το όριο λογαριασμού. Αποσυνδεθείτε από έναν λογαριασμό για να προσθέσετε έναν άλλο." + }, + "settingsTitle": { + "message": "Ρυθμίσεις εφαρμογής για $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Εναλλαγή λογαριασμού" + }, + "options": { + "message": "Ρυθμίσεις" + }, + "sessionTimeout": { + "message": "Έχει λήξει το χρονικό όριο. Παρακαλώ επιστρέψτε και προσπαθήστε να συνδεθείτε ξανά." + }, + "exportingPersonalVaultTitle": { + "message": "Εξαγωγή Προσωπικού Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Θα εξαχθούν μόνο τα προσωπικά αντικείμενα Vault που σχετίζονται με το $EMAIL$. Τα αντικείμενα Vault οργανισμού δεν θα συμπεριληφθούν.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Γεννήτρια" + }, + "whatWouldYouLikeToGenerate": { + "message": "Τι θα θέλατε να δημιουργήσετε;" + }, + "passwordType": { + "message": "Τύπος Κωδικού" + }, + "regenerateUsername": { + "message": "Επαναδημιουργία Ονόματος Χρήστη" + }, + "generateUsername": { + "message": "Δημιουργία Ονόματος Χρήστη" + }, + "usernameType": { + "message": "Τύπος Ονόματος Χρήστη" + }, + "plusAddressedEmail": { + "message": "Συν Διεύθυνση Email" + }, + "plusAddressedEmailDesc": { + "message": "Χρησιμοποιήστε τις δυνατότητες δευτερεύουσας διεύθυνσης του παρόχου email σας." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Χρησιμοποιήστε τα διαμορφωμένα εισερχόμενα catch-all του domain σας." + }, + "random": { + "message": "Τυχαίο" + }, + "randomWord": { + "message": "Τυχαία Λέξη" + }, + "websiteName": { + "message": "Όνομα Ιστοσελίδας" + }, + "service": { + "message": "Υπηρεσία" + } +} diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json new file mode 100644 index 0000000000..e204d4d59c --- /dev/null +++ b/apps/desktop/src/locales/en/messages.json @@ -0,0 +1,1921 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "uppercase": { + "message": "Uppercase (A-Z)" + }, + "lowercase": { + "message": "Lowercase (a-z)" + }, + "numbers": { + "message": "Numbers (0-9)" + }, + "specialCharacters": { + "message": "Special Characters (!@#$%^&*)" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go to Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check for Updates…" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart to Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count", + "description": "This text will be displayed after a Send has been accessed the maximum amount of times." + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "locked": { + "message": "Locked" + }, + "unlocked": { + "message": "Unlocked" + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email", + "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + }, + "forwardedEmail": { + "message": "Forwarded Email Alias" + }, + "forwardedEmailDesc": { + "message": "Generate an email alias with an external forwarding service." + }, + "hostname": { + "message": "Hostname", + "description": "Part of a URL." + }, + "apiAccessToken": { + "message": "API Access Token" + }, + "apiKey": { + "message": "API Key" + } +} diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json new file mode 100644 index 0000000000..ae918f7eb1 --- /dev/null +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -0,0 +1,1740 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All items" + }, + "favorites": { + "message": "Favourites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search vault" + }, + "addItem": { + "message": "Add item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organisation" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organisation that you wish to move this item to. Moving to an organisation transfers ownership of the item to that organisation. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit item" + }, + "emailAddress": { + "message": "Email address" + }, + "verificationCodeTotp": { + "message": "Verification code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimise when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimise when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle visibility" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security code" + }, + "identityName": { + "message": "Identity name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "National Insurance number" + }, + "passportNumber": { + "message": "Passport number" + }, + "licenseNumber": { + "message": "Licence number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "e.g.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration month" + }, + "expirationYear": { + "message": "Expiration year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First name" + }, + "middleName": { + "message": "Middle name" + }, + "lastName": { + "message": "Last name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / town" + }, + "stateProvince": { + "message": "County" + }, + "zipPostalCode": { + "message": "Postcode" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favourite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New custom field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete item" + }, + "deleteFolder": { + "message": "Delete folder" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the bin?" + }, + "deletedItem": { + "message": "Sent item to bin" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "noneFolder": { + "message": "No folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add folder" + }, + "editFolder": { + "message": "Edit folder" + }, + "regeneratePassword": { + "message": "Regenerate password" + }, + "copyPassword": { + "message": "Copy password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of words" + }, + "wordSeparator": { + "message": "Word separator" + }, + "capitalize": { + "message": "Capitalise", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum numbers" + }, + "minSpecial": { + "message": "Minimum special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid ambiguous characters" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchFavorites": { + "message": "Search favourites" + }, + "searchType": { + "message": "Search type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add new attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "options": { + "message": "Options" + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create account" + }, + "logIn": { + "message": "Log in" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type master password" + }, + "masterPassHint": { + "message": "Master password hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "verificationCode": { + "message": "Verification code" + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery code" + }, + "authenticatorAppTitle": { + "message": "Authenticator app" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP security key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organisation using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled. However, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step login options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premise hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API server URL" + }, + "webVaultUrl": { + "message": "Web vault server URL" + }, + "identityUrl": { + "message": "Identity server URL" + }, + "notificationsUrl": { + "message": "Notifications server URL" + }, + "iconsUrl": { + "message": "Icons server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log out" + }, + "addNewLogin": { + "message": "Add new login" + }, + "addNewItem": { + "message": "Add new item" + }, + "addNewFolder": { + "message": "Add new folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockNow": { + "message": "Lock now" + }, + "passwordGenerator": { + "message": "Password generator" + }, + "emailUs": { + "message": "Email us" + }, + "visitOurWebsite": { + "message": "Visit our website" + }, + "fileBugReport": { + "message": "File a bug report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow us" + }, + "syncVault": { + "message": "Sync vault" + }, + "changeMasterPass": { + "message": "Change master password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go to web vault" + }, + "getMobileApp": { + "message": "Get mobile app" + }, + "getBrowserExtension": { + "message": "Get browser extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step login" + }, + "vaultTimeout": { + "message": "Vault timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On system idle" + }, + "onSleep": { + "message": "On system sleep" + }, + "onLocked": { + "message": "On system lock" + }, + "onRestart": { + "message": "On restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable website icons" + }, + "disableFaviconDesc": { + "message": "Website icons provide a recognisable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimise to tray icon" + }, + "enableMinToTrayDesc": { + "message": "When minimising the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimise to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimising the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to tray icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable tray icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start to tray icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimised to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's colour theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check for updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart to update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy username" + }, + "copyNumber": { + "message": "Copy number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy security code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium membership" + }, + "premiumManage": { + "message": "Manage membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password history" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select all" + }, + "zoomIn": { + "message": "Zoom in" + }, + "zoomOut": { + "message": "Zoom out" + }, + "resetZoom": { + "message": "Reset zoom" + }, + "toggleFullScreen": { + "message": "Toggle full screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle developer tools" + }, + "minimize": { + "message": "Minimise", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring all to front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide others" + }, + "showAll": { + "message": "Show all" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle options" + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to tray" + }, + "alwaysOnTop": { + "message": "Always on top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export vault" + }, + "fileFormat": { + "message": "File format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over insecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "exportMasterPassword": { + "message": "Enter your master password to export your vault data." + }, + "noOrganizationsList": { + "message": "You do not belong to any organisations. Organisations allow you to share items securely with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak master password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "yourVaultIsLockedPinCode": { + "message": "Your vault is locked. Verify your PIN code to continue." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable menu bar icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to menu bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of service" + }, + "privacyPolicy": { + "message": "Privacy policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now, your current information won't be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organisation policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault timeout action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Bin", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search bin" + }, + "permanentlyDeleteItem": { + "message": "Permanently delete item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently deleted item" + }, + "restoreItem": { + "message": "Restore item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored item" + }, + "permanentlyDelete": { + "message": "Permanently delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout action confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise single sign-on" + }, + "setMasterPassword": { + "message": "Set master password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New master password" + }, + "confirmNewMasterPass": { + "message": "Confirm new master password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organisation policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of service and privacy policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint shown in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organisation and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organisation policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organisation policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + } +} diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json new file mode 100644 index 0000000000..6f1ef49942 --- /dev/null +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All items" + }, + "favorites": { + "message": "Favourites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search vault" + }, + "addItem": { + "message": "Add item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organisation" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organisation that you wish to move this item to. Moving to an organisation transfers ownership of the item to that organisation. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit item" + }, + "emailAddress": { + "message": "Email address" + }, + "verificationCodeTotp": { + "message": "Verification code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimise when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimise when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle visibility" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security code" + }, + "identityName": { + "message": "Identity name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "National Insurance number" + }, + "passportNumber": { + "message": "Passport number" + }, + "licenseNumber": { + "message": "Licence number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "e.g.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration month" + }, + "expirationYear": { + "message": "Expiration year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First name" + }, + "middleName": { + "message": "Middle name" + }, + "lastName": { + "message": "Last name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / town" + }, + "stateProvince": { + "message": "County" + }, + "zipPostalCode": { + "message": "Postcode" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favourite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New custom field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete item" + }, + "deleteFolder": { + "message": "Delete folder" + }, + "deleteAttachment": { + "message": "Delete attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the bin?" + }, + "deletedItem": { + "message": "Sent item to bin" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add folder" + }, + "editFolder": { + "message": "Edit folder" + }, + "regeneratePassword": { + "message": "Regenerate password" + }, + "copyPassword": { + "message": "Copy password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of words" + }, + "wordSeparator": { + "message": "Word separator" + }, + "capitalize": { + "message": "Capitalise", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum numbers" + }, + "minSpecial": { + "message": "Minimum special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid ambiguous characters" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchFavorites": { + "message": "Search favourites" + }, + "searchType": { + "message": "Search type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add new attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create account" + }, + "logIn": { + "message": "Log in" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type master password" + }, + "masterPassHint": { + "message": "Master password hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery code" + }, + "authenticatorAppTitle": { + "message": "Authenticator app" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP security key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organisation using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled. However, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step login options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premise hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API server URL" + }, + "webVaultUrl": { + "message": "Web vault server URL" + }, + "identityUrl": { + "message": "Identity server URL" + }, + "notificationsUrl": { + "message": "Notifications server URL" + }, + "iconsUrl": { + "message": "Icons server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log out" + }, + "addNewLogin": { + "message": "Add new login" + }, + "addNewItem": { + "message": "Add new item" + }, + "addNewFolder": { + "message": "Add new folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a bug report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow us" + }, + "syncVault": { + "message": "Sync vault" + }, + "changeMasterPass": { + "message": "Change master password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go to web vault" + }, + "getMobileApp": { + "message": "Get mobile app" + }, + "getBrowserExtension": { + "message": "Get browser extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your master password to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step login" + }, + "vaultTimeout": { + "message": "Vault timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On system idle" + }, + "onSleep": { + "message": "On system sleep" + }, + "onLocked": { + "message": "On system lock" + }, + "onRestart": { + "message": "On restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable website icons" + }, + "disableFaviconDesc": { + "message": "Website icons provide a recognisable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimise to tray icon" + }, + "enableMinToTrayDesc": { + "message": "When minimising the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimise to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimising the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to tray icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable tray icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start to tray icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimised to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's colour theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check for updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart to update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy username" + }, + "copyNumber": { + "message": "Copy number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy security code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium membership" + }, + "premiumManage": { + "message": "Manage membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password history" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select all" + }, + "zoomIn": { + "message": "Zoom in" + }, + "zoomOut": { + "message": "Zoom out" + }, + "resetZoom": { + "message": "Reset zoom" + }, + "toggleFullScreen": { + "message": "Toggle full screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle developer tools" + }, + "minimize": { + "message": "Minimise", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring all to front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide others" + }, + "showAll": { + "message": "Show all" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle options" + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to tray" + }, + "alwaysOnTop": { + "message": "Always on top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export vault" + }, + "fileFormat": { + "message": "File format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over insecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organisations. Organisations allow you to share items securely with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak master password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable menu bar icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to menu bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of service" + }, + "privacyPolicy": { + "message": "Privacy policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now, your current information won't be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organisation policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault timeout action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Bin", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search bin" + }, + "permanentlyDeleteItem": { + "message": "Permanently delete item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently deleted item" + }, + "restoreItem": { + "message": "Restore item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored item" + }, + "permanentlyDelete": { + "message": "Permanently delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout action confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise single sign-on" + }, + "setMasterPassword": { + "message": "Set master password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New master password" + }, + "confirmNewMasterPass": { + "message": "Confirm new master password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organisation policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of service and privacy policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint shown in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organisation and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organisation policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organisation policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organisation. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organisation policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organisation." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organisation has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organisation administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organisation policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organisation.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organisation" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organisation?" + }, + "leftOrganization": { + "message": "You have left the organisation." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organisation vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json new file mode 100644 index 0000000000..1b909d5de4 --- /dev/null +++ b/apps/desktop/src/locales/eo/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json new file mode 100644 index 0000000000..df85edfab1 --- /dev/null +++ b/apps/desktop/src/locales/es/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtros" + }, + "allItems": { + "message": "Todos los elementos" + }, + "favorites": { + "message": "Favoritos" + }, + "types": { + "message": "Tipos" + }, + "typeLogin": { + "message": "Entrada" + }, + "typeCard": { + "message": "Tarjeta" + }, + "typeIdentity": { + "message": "Identidad" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "folders": { + "message": "Carpetas" + }, + "collections": { + "message": "Colecciones" + }, + "searchVault": { + "message": "Buscar en caja fuerte" + }, + "addItem": { + "message": "Añadir elemento" + }, + "shared": { + "message": "Compartido" + }, + "share": { + "message": "Compartir" + }, + "moveToOrganization": { + "message": "Mover a la organización" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ se desplazó a $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Elige una organización a la que deseas mover este objeto. Moviendo a una organización transfiere la propiedad del objeto a esa organización. Ya no serás el dueño directo de este objeto una vez que haya sido movido." + }, + "attachments": { + "message": "Adjuntos" + }, + "viewItem": { + "message": "Ver elemento" + }, + "name": { + "message": "Nombre" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nueva URI" + }, + "username": { + "message": "Usuario" + }, + "password": { + "message": "Contraseña" + }, + "passphrase": { + "message": "Frase de contraseña" + }, + "editItem": { + "message": "Editar elemento" + }, + "emailAddress": { + "message": "Correo electrónico" + }, + "verificationCodeTotp": { + "message": "Código de verificación (TOTP)" + }, + "website": { + "message": "Web" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Campos personalizados" + }, + "launch": { + "message": "Iniciar" + }, + "copyValue": { + "message": "Copiar valor", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimizar al copiar al portapapeles" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimizar al copiar los datos de un elemento al portapapeles." + }, + "toggleVisibility": { + "message": "Alternar visibilidad" + }, + "toggleCollapse": { + "message": "Colapsar/Expandir", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Nombre del propietario de la tarjeta" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Expiración" + }, + "securityCode": { + "message": "Código de seguridad" + }, + "identityName": { + "message": "Nombre de la identidad" + }, + "company": { + "message": "Empresa" + }, + "ssn": { + "message": "Nº de la seguridad social" + }, + "passportNumber": { + "message": "Nº de pasaporte" + }, + "licenseNumber": { + "message": "Número de licencia" + }, + "email": { + "message": "Correo electrónico" + }, + "phone": { + "message": "Teléfono" + }, + "address": { + "message": "Dirección" + }, + "premiumRequired": { + "message": "Premium requerido" + }, + "premiumRequiredDesc": { + "message": "Se quiere membrasía Premium para poder utilizar esta característica." + }, + "errorOccurred": { + "message": "Ha ocurrido un error." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "Enero" + }, + "february": { + "message": "Febrero" + }, + "march": { + "message": "Marzo" + }, + "april": { + "message": "Abril" + }, + "may": { + "message": "Mayo" + }, + "june": { + "message": "Junio" + }, + "july": { + "message": "Julio" + }, + "august": { + "message": "Agosto" + }, + "september": { + "message": "Septiembre" + }, + "october": { + "message": "Octubre" + }, + "november": { + "message": "Noviembre" + }, + "december": { + "message": "Diciembre" + }, + "ex": { + "message": "ej.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Título" + }, + "mr": { + "message": "Sr" + }, + "mrs": { + "message": "Sra" + }, + "ms": { + "message": "Srta" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mes de expiración" + }, + "expirationYear": { + "message": "Año de expiración" + }, + "select": { + "message": "Seleccionar" + }, + "other": { + "message": "Otro" + }, + "generatePassword": { + "message": "Generar contraseña" + }, + "type": { + "message": "Tipo" + }, + "firstName": { + "message": "Nombre" + }, + "middleName": { + "message": "2º nombre" + }, + "lastName": { + "message": "Apellido" + }, + "fullName": { + "message": "Nombre" + }, + "address1": { + "message": "Dirección 1" + }, + "address2": { + "message": "Dirección 2" + }, + "address3": { + "message": "Dirección 3" + }, + "cityTown": { + "message": "Ciudad / Pueblo" + }, + "stateProvince": { + "message": "Estado / Provincia" + }, + "zipPostalCode": { + "message": "Código postal" + }, + "country": { + "message": "País" + }, + "save": { + "message": "Guardar" + }, + "cancel": { + "message": "Cancelar" + }, + "delete": { + "message": "Eliminar" + }, + "favorite": { + "message": "Favorito" + }, + "edit": { + "message": "Editar" + }, + "authenticatorKeyTotp": { + "message": "Clave de autenticación (TOTP)" + }, + "folder": { + "message": "Carpeta" + }, + "newCustomField": { + "message": "Nuevo campo personalizado" + }, + "value": { + "message": "Valor" + }, + "dragToSort": { + "message": "Arrastre para ordenar" + }, + "cfTypeText": { + "message": "Texto" + }, + "cfTypeHidden": { + "message": "Oculto" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "cfTypeLinked": { + "message": "Conectado", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Valor vinculado", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Eliminar" + }, + "nameRequired": { + "message": "Nombre requerido." + }, + "addedItem": { + "message": "Elemento añadido" + }, + "editedItem": { + "message": "Elemento editado" + }, + "deleteItem": { + "message": "Eliminar elemento" + }, + "deleteFolder": { + "message": "Borrar carpeta" + }, + "deleteAttachment": { + "message": "Eliminar archivo adjunto" + }, + "deleteItemConfirmation": { + "message": "¿Estás seguro de que quieres eliminar este elemento?" + }, + "deletedItem": { + "message": "Elemento eliminado" + }, + "overwritePasswordConfirmation": { + "message": "¿Estás seguro de que quieres sobreescribir la contraseña actual?" + }, + "overwriteUsername": { + "message": "Reemplazar nombre de usuario" + }, + "overwriteUsernameConfirmation": { + "message": "¿Esta seguro que desea reemplazar el nombre de usuario?" + }, + "noneFolder": { + "message": "Sin carpeta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Añadir carpeta" + }, + "editFolder": { + "message": "Editar carpeta" + }, + "regeneratePassword": { + "message": "Regenerar contraseña" + }, + "copyPassword": { + "message": "Copiar contraseña" + }, + "copyUri": { + "message": "Copiar URI" + }, + "copyVerificationCodeTotp": { + "message": "Copiar código de verificación (TOTP)" + }, + "length": { + "message": "Longitud" + }, + "numWords": { + "message": "Número de palabras" + }, + "wordSeparator": { + "message": "Separador de palabras" + }, + "capitalize": { + "message": "Mayúsculas iniciales", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Incluir número" + }, + "close": { + "message": "Cerrar" + }, + "minNumbers": { + "message": "Mínimo de caracteres numéricos" + }, + "minSpecial": { + "message": "Mínimo de caracteres especiales", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitar caracteres ambiguos" + }, + "searchCollection": { + "message": "Buscar en colección" + }, + "searchFolder": { + "message": "Buscar en carpeta" + }, + "searchFavorites": { + "message": "Buscar en favoritos" + }, + "searchType": { + "message": "Buscar en tipo", + "description": "Search item type" + }, + "newAttachment": { + "message": "Añadir nuevo adjunto" + }, + "deletedAttachment": { + "message": "Adjunto eliminado" + }, + "deleteAttachmentConfirmation": { + "message": "¿Estás seguro de querer eliminar este adjunto?" + }, + "attachmentSaved": { + "message": "El adjunto se ha guardado." + }, + "file": { + "message": "Archivo" + }, + "selectFile": { + "message": "Selecciona un archivo." + }, + "maxFileSize": { + "message": "El tamaño máximo de archivo es de 500MB." + }, + "updateKey": { + "message": "No puedes usar esta característica hasta que actualices tu clave de cifrado." + }, + "editedFolder": { + "message": "Carpeta editada" + }, + "addedFolder": { + "message": "Carpeta añadida" + }, + "deleteFolderConfirmation": { + "message": "¿Estás seguro de querer eliminar esta carpeta?" + }, + "deletedFolder": { + "message": "Carpeta eliminada" + }, + "loginOrCreateNewAccount": { + "message": "Identifícate o crea una nueva cuenta para acceder a tu caja fuerte." + }, + "createAccount": { + "message": "Crear cuenta" + }, + "logIn": { + "message": "Identificarse" + }, + "submit": { + "message": "Enviar" + }, + "masterPass": { + "message": "Contraseña maestra" + }, + "masterPassDesc": { + "message": "La contraseña maestra es la clave que utilizas para acceder a tu caja fuerte. Es muy importante que no olvides tu contraseña maestra. No hay forma de recuperarla si la olvidas." + }, + "masterPassHintDesc": { + "message": "Una pista de tu contraseña maestra puede ayudarte a recordarla en caso de que la olvides." + }, + "reTypeMasterPass": { + "message": "Vuelve a escribir tu contraseña maestra" + }, + "masterPassHint": { + "message": "Pista de contraseña maestra (opcional)" + }, + "settings": { + "message": "Ajustes" + }, + "passwordHint": { + "message": "Pista de contraseña" + }, + "enterEmailToGetHint": { + "message": "Introduce el correo electrónico de tu cuenta para recibir la pista de tu contraseña maestra." + }, + "getMasterPasswordHint": { + "message": "Obtener pista de la contraseña maestra" + }, + "emailRequired": { + "message": "Correo electrónico requerido." + }, + "invalidEmail": { + "message": "Correo electrónico no válido." + }, + "masterPassRequired": { + "message": "Contraseña maestra requerida." + }, + "masterPassLength": { + "message": "La contraseña maestra debe tener al menos 8 caracteres." + }, + "masterPassDoesntMatch": { + "message": "La confirmación de contraseña maestra no coincide." + }, + "newAccountCreated": { + "message": "¡Tu nueva cuenta ha sido creada! Ahora puedes acceder." + }, + "masterPassSent": { + "message": "Te hemos enviado un correo electrónico con la pista de tu contraseña maestra." + }, + "unexpectedError": { + "message": "Ha ocurrido un error inesperado." + }, + "itemInformation": { + "message": "Información del elemento" + }, + "noItemsInList": { + "message": "No hay elementos que listar." + }, + "sendVerificationCode": { + "message": "Envía un código de verificación a tu correo electrónico" + }, + "sendCode": { + "message": "Enviar código" + }, + "codeSent": { + "message": "Código enviado" + }, + "verificationCode": { + "message": "Código de verificación" + }, + "confirmIdentity": { + "message": "Confirma tu identidad para continuar." + }, + "verificationCodeRequired": { + "message": "Código de verificación requerido." + }, + "invalidVerificationCode": { + "message": "Código de verificación incorrecto" + }, + "continue": { + "message": "Continuar" + }, + "enterVerificationCodeApp": { + "message": "Introduce el código de verificación de 6 dígitos de tu aplicación autenticadora." + }, + "enterVerificationCodeEmail": { + "message": "Introduce el código de verificación de 6 dígitos que fue enviado a $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Correo de verificación enviado a $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Recordarme" + }, + "sendVerificationCodeEmailAgain": { + "message": "Reenviar código de verificación por correo electrónico" + }, + "useAnotherTwoStepMethod": { + "message": "Utilizar otro método de autenticación en dos pasos" + }, + "insertYubiKey": { + "message": "Inserta tu YubiKey en el puerto USB de tu equipo y posteriormente pulsa su botón." + }, + "insertU2f": { + "message": "Inserta tu llave de seguridad en el puerto USB de tu equipo. Si tiene un botón, púlsalo." + }, + "recoveryCodeDesc": { + "message": "¿Has perdido el acceso a todos tus métodos de autenticación en dos pasos? Utiliza tu código de recuperación para deshabilitar todos los métodos de autenticación en dos pasos de tu cuenta." + }, + "recoveryCodeTitle": { + "message": "Código de recuperación" + }, + "authenticatorAppTitle": { + "message": "Aplicación de autenticación" + }, + "authenticatorAppDesc": { + "message": "Utiliza una aplicación de autenticación (como Authy o Google Authenticator) para generar código de verificación basados en tiempo.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Llave de seguridad YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Usa un Yubikey para acceder a tu cuenta. Funciona con YubiKey 4, 4 Nano, 4C y dispositivos NEO." + }, + "duoDesc": { + "message": "Verificar con Duo Security usando la aplicación Duo Mobile, SMS, llamada telefónica o llave de seguridad U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verificar con Duo Security para tu organización usando la aplicación Duo Mobile, SMS, llamada telefónica o llave de seguridad U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilice cualquier clave de seguridad WebAuthn habilitada para acceder a su cuenta." + }, + "emailTitle": { + "message": "Correo electrónico" + }, + "emailDesc": { + "message": "Los códigos de verificación te serán enviados por correo electrónico." + }, + "loginUnavailable": { + "message": "Entrada no disponible" + }, + "noTwoStepProviders": { + "message": "Esta cuenta tiene autenticación en dos pasos habilitada, pero ninguno de los métodos configurados son soportados por este dispositivo." + }, + "noTwoStepProviders2": { + "message": "Por favor, añade proveedores que estén mejor soportados entre dispositivos (como una aplicación autenticadora)." + }, + "twoStepOptions": { + "message": "Opciones de la autenticación en dos pasos" + }, + "selfHostedEnvironment": { + "message": "Entorno de alojamiento propio" + }, + "selfHostedEnvironmentFooter": { + "message": "Especifica la URL base de tu instalación de Bitwarden de alojamiento propio." + }, + "customEnvironment": { + "message": "Entorno personalizado" + }, + "customEnvironmentFooter": { + "message": "Para usuarios avanzados. Puedes especificar la URL base de cada servicio de forma independiente." + }, + "baseUrl": { + "message": "URL del servidor" + }, + "apiUrl": { + "message": "URL del servidor de la API" + }, + "webVaultUrl": { + "message": "URL del servidor de la caja fuerte web" + }, + "identityUrl": { + "message": "URL del servidor de identidad" + }, + "notificationsUrl": { + "message": "URL del servidor de notificaciones" + }, + "iconsUrl": { + "message": "URL del servidor de iconos" + }, + "environmentSaved": { + "message": "Las URLs del entorno han sido guardadas." + }, + "ok": { + "message": "Aceptar" + }, + "yes": { + "message": "Si" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Sobreescribir contraseña" + }, + "learnMore": { + "message": "Más información" + }, + "featureUnavailable": { + "message": "Característica no disponible" + }, + "loggedOut": { + "message": "Sesión terminada" + }, + "loginExpired": { + "message": "Tu sesión ha expirado." + }, + "logOutConfirmation": { + "message": "¿Estás seguro de querer cerrar sesión?" + }, + "logOut": { + "message": "Cerrar sesión" + }, + "addNewLogin": { + "message": "Añadir nueva entrada" + }, + "addNewItem": { + "message": "Añadir nuevo elemento" + }, + "addNewFolder": { + "message": "Añadir nueva carpeta" + }, + "view": { + "message": "Ver" + }, + "account": { + "message": "Cuenta" + }, + "loading": { + "message": "Cargando..." + }, + "lockVault": { + "message": "Bloquear caja fuerte" + }, + "passwordGenerator": { + "message": "Generador de contraseñas" + }, + "contactUs": { + "message": "Contáctenos" + }, + "getHelp": { + "message": "Obtener ayuda" + }, + "fileBugReport": { + "message": "Reportar un fallo" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Síguenos" + }, + "syncVault": { + "message": "Sincronizar caja fuerte" + }, + "changeMasterPass": { + "message": "Cambiar contraseña maestra" + }, + "changeMasterPasswordConfirmation": { + "message": "Puedes cambiar tu contraseña maestra en la caja fuerte web de bitwarden.com. ¿Quieres visitar ahora el sitio web?" + }, + "fingerprintPhrase": { + "message": "Frase de huella digital", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Frase de la huella digital de su cuenta", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ir a la caja fuerte web" + }, + "getMobileApp": { + "message": "Obtener la aplicación móvil" + }, + "getBrowserExtension": { + "message": "Obtener extensión de navegador" + }, + "syncingComplete": { + "message": "Sincronización completada" + }, + "syncingFailed": { + "message": "Sincronización fallida" + }, + "yourVaultIsLocked": { + "message": "Tu caja fuerte está bloqueada. Verifica tu contraseña maestra para continuar." + }, + "unlock": { + "message": "Desbloquear" + }, + "loggedInAsOn": { + "message": "Conectado como $EMAIL$ en $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Contraseña maestra no válida" + }, + "twoStepLoginConfirmation": { + "message": "La autenticación en dos pasos hace que tu cuenta sea mucho más segura, requiriendo que introduzcas un código de seguridad de una aplicación de autenticación cada vez que accedes. La autenticación en dos pasos puede ser habilitada en la caja fuerte web de bitwarden.com. ¿Quieres visitar ahora el sitio web?" + }, + "twoStepLogin": { + "message": "Autenticación en dos pasos" + }, + "vaultTimeout": { + "message": "Tiempo de espera de la caja fuerte" + }, + "vaultTimeoutDesc": { + "message": "Elije cuando se agotará el tiempo de espera de tu caja fuerte y se ejecutará la acción seleccionada." + }, + "immediately": { + "message": "Inmediatamente" + }, + "tenSeconds": { + "message": "10 segundos" + }, + "twentySeconds": { + "message": "20 segundos" + }, + "thirtySeconds": { + "message": "30 segundos" + }, + "oneMinute": { + "message": "1 minuto" + }, + "twoMinutes": { + "message": "2 minutos" + }, + "fiveMinutes": { + "message": "5 minutos" + }, + "fifteenMinutes": { + "message": "15 minutos" + }, + "thirtyMinutes": { + "message": "30 minutos" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 horas" + }, + "onIdle": { + "message": "En inactividad del sistema" + }, + "onSleep": { + "message": "Al suspender el sistema" + }, + "onLocked": { + "message": "Al bloquear el sistema" + }, + "onRestart": { + "message": "Al reiniciar" + }, + "never": { + "message": "Nunca" + }, + "security": { + "message": "Seguridad" + }, + "clearClipboard": { + "message": "Limpiar el Portapapeles", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Borrar automáticamente los valores copiados de su portapapeles.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Deshabilitar iconos de sitio web" + }, + "disableFaviconDesc": { + "message": "Los iconos de sitio web añaden una imagen reconocible al lado de cada entrada de tu caja fuerte." + }, + "enableMinToTray": { + "message": "Minimizar a icono en la bandeja" + }, + "enableMinToTrayDesc": { + "message": "Cuando se minimiza la ventana, se muestra un icono en la bandeja del sistema." + }, + "enableMinToMenuBar": { + "message": "Minimizar a la barra de menú" + }, + "enableMinToMenuBarDesc": { + "message": "Al minimizar la ventana, muestra un icono en la barra de menú." + }, + "enableCloseToTray": { + "message": "Cerrar a icono de la bandeja" + }, + "enableCloseToTrayDesc": { + "message": "Cuando se cierre la ventana, mostrar un icono en la bandeja de sistema." + }, + "enableCloseToMenuBar": { + "message": "Cerrar a la barra de menú" + }, + "enableCloseToMenuBarDesc": { + "message": "Al cerrar la ventana, muestra un icono en la barra de menú." + }, + "enableTray": { + "message": "Activar icono en bandeja" + }, + "enableTrayDesc": { + "message": "Mostrar siempre el icono de la bandeja del sistema." + }, + "startToTray": { + "message": "Iniciar como icono de bandeja del sistema" + }, + "startToTrayDesc": { + "message": "Cuando la aplicación se inicia por primera vez, sólo muestra un icono en la bandeja del sistema." + }, + "startToMenuBar": { + "message": "Inicia a la barra de menú" + }, + "startToMenuBarDesc": { + "message": "Cuando la aplicación se inicia por primera vez, mostrar únicamente un icono en la barra de menú." + }, + "openAtLogin": { + "message": "Arranca automáticamente al iniciar sesión" + }, + "openAtLoginDesc": { + "message": "Arranca la aplicación Bitwarden Desktop automáticamente tras iniciar sesión." + }, + "alwaysShowDock": { + "message": "Mostrar siempre en el Dock" + }, + "alwaysShowDockDesc": { + "message": "Muestra el icono de Bitwarden en el Dock incluso cuando se minimiza a la barra de menú." + }, + "confirmTrayTitle": { + "message": "Confirmar deshabilitar en bandeja del sistema" + }, + "confirmTrayDesc": { + "message": "Deshabilitar esta opción también desactivará todas las demás opciones relacionadas con la bandeja." + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Cambiar el idioma usado por la aplicación. Es necesario reiniciar." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Cambiar el tema de la aplicación." + }, + "dark": { + "message": "Oscuro", + "description": "Dark color" + }, + "light": { + "message": "Claro", + "description": "Light color" + }, + "copy": { + "message": "Copiar", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Buscar actualizaciones" + }, + "version": { + "message": "Versión $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Reiniciar para actualizar" + }, + "restartToUpdateDesc": { + "message": "La versión $VERSION_NUM$ está lista para instalar. Debes reiniciar Bitwarden para completar la instalación. ¿Quieres reiniciar y actualizar ahora?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Actualización disponible" + }, + "updateAvailableDesc": { + "message": "Se ha encontrado una actualización. ¿Quieres descargarla ahora?" + }, + "restart": { + "message": "Reiniciar" + }, + "later": { + "message": "Más tarde" + }, + "noUpdatesAvailable": { + "message": "No hay actualizaciones disponibles. Estás utilizando la última versión." + }, + "updateError": { + "message": "Error de actualización" + }, + "unknown": { + "message": "Desconocido" + }, + "copyUsername": { + "message": "Copiar usuario" + }, + "copyNumber": { + "message": "Copiar número", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copiar código de seguridad", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Membresía Premium" + }, + "premiumManage": { + "message": "Gestionar membresía" + }, + "premiumManageAlert": { + "message": "Puedes gestionar tu membresía en la caja fuerte web de bitwarden.com. ¿Quieres visitar el sitio web ahora?" + }, + "premiumRefresh": { + "message": "Actualizar membresía" + }, + "premiumNotCurrentMember": { + "message": "Actualmente no eres un miembro premium." + }, + "premiumSignUpAndGet": { + "message": "Registrate como miembro Premium y obtén:" + }, + "premiumSignUpStorage": { + "message": "1GB de espacio en disco cifrado." + }, + "premiumSignUpTwoStep": { + "message": "Métodos de autenticación en dos pasos adicionales como YubiKey, FIDO U2F y Duo." + }, + "premiumSignUpReports": { + "message": "Higiene de contraseña, salud de la cuenta e informes de violaciones de datos para mantener tu caja fuerte segura." + }, + "premiumSignUpTotp": { + "message": "Generación de códigos TOTP (2FA) para registros de tu caja fuerte." + }, + "premiumSignUpSupport": { + "message": "Soporte prioritario." + }, + "premiumSignUpFuture": { + "message": "Acceso a nuevas características premium en el futuro. ¡Hay más en camino!" + }, + "premiumPurchase": { + "message": "Comprar Premium" + }, + "premiumPurchaseAlert": { + "message": "Puedes comprar la membresía Premium en la caja fuerte web de bitwarden.com. ¿Quieres visitar el sitio web ahora?" + }, + "premiumCurrentMember": { + "message": "¡Eres un miembro Premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Gracias por apoyar el desarrollo de Bitwarden." + }, + "premiumPrice": { + "message": "¡Todo por sólo $PRICE$/año!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Actualización completada" + }, + "passwordHistory": { + "message": "Historial de contraseñas" + }, + "clear": { + "message": "Limpiar", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "No hay contraseñas que listar." + }, + "undo": { + "message": "Deshacer" + }, + "redo": { + "message": "Rehacer" + }, + "cut": { + "message": "Cortar", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Pegar", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Seleccionar todo" + }, + "zoomIn": { + "message": "Zoom +" + }, + "zoomOut": { + "message": "Zoom -" + }, + "resetZoom": { + "message": "Reestablecer zoom" + }, + "toggleFullScreen": { + "message": "Alternar pantalla completa" + }, + "reload": { + "message": "Recargar" + }, + "toggleDevTools": { + "message": "Herramientas de desarrollo" + }, + "minimize": { + "message": "Minimizar", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Traer todo al frente", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Acerca de Bitwarden" + }, + "services": { + "message": "Servicios" + }, + "hideBitwarden": { + "message": "Ocultar Bitwarden" + }, + "hideOthers": { + "message": "Ocultar otros" + }, + "showAll": { + "message": "Mostrar todo" + }, + "quitBitwarden": { + "message": "Salir de Bitwarden" + }, + "valueCopied": { + "message": "Valor de $VALUE$ copiado", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Ayuda" + }, + "window": { + "message": "Ventana" + }, + "checkPassword": { + "message": "Comprobar si la contraseña está comprometida." + }, + "passwordExposed": { + "message": "Esta contraseña fue encontrada $VALUE$ vez/veces en filtraciones de datos. Deberías cambiarla.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Esta contraseña no fue encontrada en ninguna filtración de datos conocida. Deberías poder utilizarla de forma segura." + }, + "baseDomain": { + "message": "Dominio base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nombre de dominio", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Servidor", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exacta" + }, + "startsWith": { + "message": "Empieza con" + }, + "regEx": { + "message": "Expresión regular", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Tipo de detección", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Detección por defecto", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Alternar opciones" + }, + "organization": { + "message": "Organización", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Por defecto" + }, + "exit": { + "message": "Salir" + }, + "showHide": { + "message": "Mostrar / Ocultar", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Ocultar en bandeja" + }, + "alwaysOnTop": { + "message": "Siempre por encima", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Actualizada", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Contraseña actualizada", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exportar caja fuerte" + }, + "fileFormat": { + "message": "Formato de archivo" + }, + "warning": { + "message": "ADVERTENCIA", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirmar la exportación de la bóveda" + }, + "exportWarningDesc": { + "message": "Esta exportación contiene tus datos de la caja fuerte en un formato no cifrado. No deberías almacenar o enviar el archivo exportado por canales no seguros (como el correo electrónico). Elimínalo inmediatamente cuando termines de utilizarlo." + }, + "encExportKeyWarningDesc": { + "message": "Esta exportación encripta tus datos utilizando la clave de encriptación de tu cuenta. Si alguna vez renueva la clave de cifrado de su cuenta, deberá exportar de nuevo, ya que no podrá descifrar este archivo de exportación." + }, + "encExportAccountWarningDesc": { + "message": "Las claves de encriptación de las cuentas son únicas para cada cuenta de usuario de Bitwarden, por lo que no se puede importar una exportación encriptada a una cuenta diferente." + }, + "noOrganizationsList": { + "message": "No perteneces a ninguna organización. Las organizaciones te permiten compartir elementos con otros usuarios de forma segura." + }, + "noCollectionsInList": { + "message": "No hay colecciones que listar." + }, + "ownership": { + "message": "Propiedad" + }, + "whoOwnsThisItem": { + "message": "¿Quién posee este elemento?" + }, + "strong": { + "message": "Fuerte", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Buena", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Débil", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Contraseña maestra débil" + }, + "weakMasterPasswordDesc": { + "message": "La contraseña maestra que ha elegido es débil. Debe usar una contraseña maestra fuerte (o una frase de contraseña) para proteger adecuadamente su cuenta de Bitwarden. ¿Está seguro de que desea utilizar esta contraseña maestra?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Desbloquear con PIN" + }, + "setYourPinCode": { + "message": "Establece tu código PIN para desbloquear Bitwarden. Tus ajustes de PIN se reiniciarán si alguna vez se desloguea completamente de la aplicación." + }, + "pinRequired": { + "message": "Código PIN requerido." + }, + "invalidPin": { + "message": "Código PIN inválido." + }, + "unlockWithWindowsHello": { + "message": "Desbloquear con Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verificar para Bitwarden." + }, + "unlockWithTouchId": { + "message": "Desbloquear con Touch ID" + }, + "touchIdConsentMessage": { + "message": "Verificar para Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "No solicite Windows Hello al empezar." + }, + "noAutoPromptTouchId": { + "message": "No solicite Touch ID al empezar." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloquear con contraseña maestra al reiniciar" + }, + "preferences": { + "message": "Preferencias" + }, + "enableMenuBar": { + "message": "Activar ícono de barra de menú" + }, + "enableMenuBarDesc": { + "message": "Mostrar siempre un ícono en la barra de menú." + }, + "hideToMenuBar": { + "message": "Ocultar en la barra de menú" + }, + "selectOneCollection": { + "message": "Debes seleccionar al menos una colección." + }, + "premiumUpdated": { + "message": "Has actualizado a premium." + }, + "restore": { + "message": "Restaurar" + }, + "premiumManageAlertAppStore": { + "message": "Puedes administrar tu suscripción desde la App Store. ¿Quieres visitar la App Store ahora?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Términos y condiciones del servicio" + }, + "privacyPolicy": { + "message": "Política de privacidad" + }, + "unsavedChangesConfirmation": { + "message": "¿Estás seguro que deseas salir? Si sales ahora, tu información actual no será guardada" + }, + "unsavedChangesTitle": { + "message": "Hay cambios sin guardar" + }, + "clone": { + "message": "Clonar" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o más políticas de la organización están afectando la configuración del generador." + }, + "vaultTimeoutAction": { + "message": "Tiempo de espera de la caja fuerte" + }, + "vaultTimeoutActionLockDesc": { + "message": "Una caja fuerte bloqueada requiere que introduzcas de nuevo tu contraseña maestra para acceder nuevamente." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Cerrar sesión en la caja fuerte requiere que vuelvas a autenticarte para acceder nuevamente a ella." + }, + "lock": { + "message": "Bloquear", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Papelera", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Buscar en la Papelera" + }, + "permanentlyDeleteItem": { + "message": "Eliminar elemento de forma permanente" + }, + "permanentlyDeleteItemConfirmation": { + "message": "¿Estás seguro de eliminar de forma permanente este elemento?" + }, + "permanentlyDeletedItem": { + "message": "Elemento eliminado de forma permanente" + }, + "restoreItem": { + "message": "Restaurar elemento" + }, + "restoreItemConfirmation": { + "message": "¿Estás seguro de que quieres restaurar este elemento?" + }, + "restoredItem": { + "message": "Elemento restaurado" + }, + "permanentlyDelete": { + "message": "Eliminar de forma permanente" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Si cierras sesión, tu caja fuerte se bloqueará después del tiempo de espera seleccionado hasta que vuelvas a autenticarte. Utiliza esta opción sólo si este es el efecto deseado." + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmación de acción del tiempo de espera de la caja fuerte" + }, + "enterpriseSingleSignOn": { + "message": "Inicio de sesión único empresarial" + }, + "setMasterPassword": { + "message": "Establecer contraseña maestra" + }, + "ssoCompleteRegistration": { + "message": "Para completar el inicio de sesión con SSO, por favor establezca una contraseña maestra para acceder y proteger su caja fuerte." + }, + "newMasterPass": { + "message": "Nueva contraseña maestra" + }, + "confirmNewMasterPass": { + "message": "Confirma la nueva contraseña maestra" + }, + "masterPasswordPolicyInEffect": { + "message": "Una o más políticas de la organización requieren que su contraseña maestra cumpla con los siguientes requisitos:" + }, + "policyInEffectMinComplexity": { + "message": "Puntuación de complejidad mínima $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Longitud mínima $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contenga uno o más caracteres en mayúsculas" + }, + "policyInEffectLowercase": { + "message": "Contenga uno o más caracteres en minúsculas" + }, + "policyInEffectNumbers": { + "message": "Contenga uno o más números" + }, + "policyInEffectSpecial": { + "message": "Contenga uno o más de los siguientes caracteres especiales $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Su nueva contraseña maestra no cumple con los requisitos de la política." + }, + "acceptPolicies": { + "message": "Al seleccionar esta casilla, acepto lo siguiente:" + }, + "acceptPoliciesError": { + "message": "Todavía no has aceptado los términos del servicio y la política de privacidad." + }, + "enableBrowserIntegration": { + "message": "Habilitar integración con el navegador" + }, + "enableBrowserIntegrationDesc": { + "message": "La integración del navegador se usa para la biometría en el mismo." + }, + "browserIntegrationMasOnlyTitle": { + "message": "La integración del navegador no está soportada" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Por desgracia la integración del navegador sólo está soportada por ahora en la versión de la Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "La integración del navegador no está soportada" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Por desgracia la integración del navegador sólo está soportada por ahora en la versión de Microsoft Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Requiere verificación para la integración del navegador" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Requiere una capa adicional de seguridad mediante el solicitar la frase de validación de huella dactilar al establecer un enlace entre el escritorio y el navegador. Cuando se activa, requiere intervención del usuario y verificación cada vez que se establece una conexión." + }, + "approve": { + "message": "Aprobar" + }, + "verifyBrowserTitle": { + "message": "Verificar la conexión del navegador" + }, + "verifyBrowserDesc": { + "message": "Por favor, asegúrese de que la huella digital mostrada es idéntica a la huella que aparece en la extensión del navegador." + }, + "biometricsNotEnabledTitle": { + "message": "Biometría no habilitada" + }, + "biometricsNotEnabledDesc": { + "message": "La biometría del navegador requiere habilitar primero la biometría de escritorio en los ajustes." + }, + "personalOwnershipSubmitError": { + "message": "Debido a una política de organización, tiene restringido el guardar elementos a su bóveda personal. Cambie la configuración de propietario a organización y elija entre las colecciones disponibles." + }, + "hintEqualsPassword": { + "message": "La pista para la contraseña no puede ser igual que la contraseña." + }, + "personalOwnershipPolicyInEffect": { + "message": "Una política de organización está afectando a sus opciones de propiedad." + }, + "allSends": { + "message": "Todos los Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Archivo" + }, + "sendTypeText": { + "message": "Texto" + }, + "searchSends": { + "message": "Búsqueda de Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Editar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mi bóveda" + }, + "text": { + "message": "Texto" + }, + "deletionDate": { + "message": "Fecha de eliminación" + }, + "deletionDateDesc": { + "message": "El Send se borrará definitivamente en la fecha y hora especificadas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Fecha de caducidad" + }, + "expirationDateDesc": { + "message": "Si se establece, el acceso a este Send expirará en la fecha y hora especificadas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Número máximo de accesos" + }, + "maxAccessCountDesc": { + "message": "Si se establece, los usuarios ya no podrán acceder a este Send una vez que se alcance el número máximo de accesos.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Conteo actual de accesos" + }, + "disableSend": { + "message": "Desactive este Send para que nadie pueda acceder a él.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Opcionalmente, se requiere una contraseña para que los usuarios accedan a este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Notas privadas sobre este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send enlace", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send enlace", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Cuando se accede al Envío, se oculta el texto por defecto", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send creado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send editado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send eliminado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nueva contraseña" + }, + "whatTypeOfSend": { + "message": "¿Qué tipo de Send es éste?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Crear Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "El texto que quieres enviar." + }, + "sendFileDesc": { + "message": "El archivo que quieres enviar." + }, + "days": { + "message": "$DAYS$ días", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 día" + }, + "custom": { + "message": "Personalizado" + }, + "deleteSendConfirmation": { + "message": "¿Está seguro de que quiere eliminar este envío?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copiar el enlace del Send al portapapeles", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copiar el enlace para compartir esto Enviar a mi portapapeles al guardar." + }, + "sendDisabled": { + "message": "Enviar desactivado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Debido a una política de la empresa, sólo puede eliminar un Envío existente.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copiar enlace" + }, + "disabled": { + "message": "Deshabilitado" + }, + "maxAccessCountReached": { + "message": "Se ha alcanzado el número máximo de accesos" + }, + "expired": { + "message": "Expirado" + }, + "pendingDeletion": { + "message": "Pendiente de eliminación" + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "hideEmail": { + "message": "Ocultar mi dirección de correo electrónico a los destinatarios." + }, + "sendOptionsPolicyInEffect": { + "message": "Una o más políticas de organización están afectando sus opciones del Send." + }, + "emailVerificationRequired": { + "message": "Verificación de correo electrónico requerida" + }, + "emailVerificationRequiredDesc": { + "message": "Debes verificar tu correo electrónico para usar esta característica." + }, + "passwordPrompt": { + "message": "Volver a preguntar contraseña maestra" + }, + "passwordConfirmation": { + "message": "Confirmación de contraseña maestra" + }, + "passwordConfirmationDesc": { + "message": "Esta acción está protegida. Para continuar, vuelva a introducir su contraseña maestra para verificar su identidad." + }, + "updatedMasterPassword": { + "message": "Contraseña maestra actualizada" + }, + "updateMasterPassword": { + "message": "Actualizar contraseña maestra" + }, + "updateMasterPasswordWarning": { + "message": "Su contraseña maestra ha sido cambiada recientemente por un administrador de su organización. Para acceder a la caja fuerte, debe actualizarla ahora. Proceder le desconectará de su sesión actual, requiriendo que vuelva a iniciar sesión. Las sesiones activas en otros dispositivos pueden seguir estando activas durante una hora." + }, + "hours": { + "message": "Horas" + }, + "minutes": { + "message": "Minutos" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Las políticas de tu organización están afectando el tiempo de espera de tu caja fuerte. El máximo permitido de espera es de $HOURS$ hora(s) y de $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "El tiempo de espera de tu caja fuerte excede las restricciones establecidas por tu organización." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscripción automática" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Esta organización tiene una política empresarial que lo inscribirá automáticamente en el restablecimiento de contraseña. La inscripción permitirá a los administradores de la organización cambiar su contraseña maestra." + }, + "vaultExportDisabled": { + "message": "Exportación de caja fuerte desactivada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o más políticas de organización le impiden exportar su caja fuerte personal." + }, + "addAccount": { + "message": "Añadir cuenta" + }, + "removeMasterPassword": { + "message": "Eliminar contraseña maestra" + }, + "removedMasterPassword": { + "message": "Contraseña maestra eliminada." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ está usando SSO con un servidor de claves autoalojado. Los miembros de esta organización ya no necesitarán una contraseña maestra para iniciar sesión.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Abandonar organización" + }, + "leaveOrganizationConfirmation": { + "message": "¿Estás seguro de que quieres dejar esta organización?" + }, + "leftOrganization": { + "message": "Has abandonado la organización." + }, + "ssoKeyConnectorUnavailable": { + "message": "No se puede acceder al conector de clave. Inténtalo de nuevo más tarde." + }, + "lockAllVaults": { + "message": "Bloquear todas las cajas fuertes" + }, + "accountLimitReached": { + "message": "No se puede iniciar sesión en más de 5 cuentas al mismo tiempo." + }, + "accountPreferences": { + "message": "Preferencias" + }, + "appPreferences": { + "message": "Ajustes de la aplicación (todas las cuentas)" + }, + "accountSwitcherLimitReached": { + "message": "Límite de cuentas alcanzado. Cierre sesión de una cuenta para añadir otra." + }, + "settingsTitle": { + "message": "Ajustes de la aplicación para $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Cambiar cuenta" + }, + "options": { + "message": "Opciones" + }, + "sessionTimeout": { + "message": "Su sesión ha expirado. Por favor, vuelva e intente iniciar sesión de nuevo." + }, + "exportingPersonalVaultTitle": { + "message": "Exportando bóveda personal" + }, + "exportingPersonalVaultDescription": { + "message": "Solo se exportarán los elementos de la bóveda personal asociados con $EMAIL$. Los elementos de la bóveda de la organización no se incluirán.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generador" + }, + "whatWouldYouLikeToGenerate": { + "message": "¿Qué deseas generar?" + }, + "passwordType": { + "message": "Tipo de contraseña" + }, + "regenerateUsername": { + "message": "Regenerar nombre de usuario" + }, + "generateUsername": { + "message": "Generar nombre de usuario" + }, + "usernameType": { + "message": "Tipo de nombre de usuario" + }, + "plusAddressedEmail": { + "message": "Dirección adicional de correo electrónico" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Aleatorio" + }, + "randomWord": { + "message": "Palabra aleatoria" + }, + "websiteName": { + "message": "Nombre del sitio web" + }, + "service": { + "message": "Servicio" + } +} diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json new file mode 100644 index 0000000000..97ace1cc68 --- /dev/null +++ b/apps/desktop/src/locales/et/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtrid" + }, + "allItems": { + "message": "Kõik kirjed" + }, + "favorites": { + "message": "Lemmikud" + }, + "types": { + "message": "Tüübid" + }, + "typeLogin": { + "message": "Kasutajakonto andmed" + }, + "typeCard": { + "message": "Pangakaart" + }, + "typeIdentity": { + "message": "Identiteet" + }, + "typeSecureNote": { + "message": "Turvaline märkus" + }, + "folders": { + "message": "Kaustad" + }, + "collections": { + "message": "Kogumikud" + }, + "searchVault": { + "message": "Otsi hoidlast" + }, + "addItem": { + "message": "Lisa kirje" + }, + "shared": { + "message": "Jagatud" + }, + "share": { + "message": "Jaga" + }, + "moveToOrganization": { + "message": "Teisalda organisatsiooni" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ teisaldati $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Vali organisatsioon, kuhu soovid seda kirjet teisaldada. Teisaldamisega saab kirje omanikuks organisatsioon. Pärast kirje teisaldamist ei ole sa enam selle otsene omanik." + }, + "attachments": { + "message": "Manused" + }, + "viewItem": { + "message": "Kirje vaatamine" + }, + "name": { + "message": "Nimi" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Uus URI" + }, + "username": { + "message": "Kasutajanimi" + }, + "password": { + "message": "Parool" + }, + "passphrase": { + "message": "Paroolifraas" + }, + "editItem": { + "message": "Kirje muutmine" + }, + "emailAddress": { + "message": "E-posti aadress" + }, + "verificationCodeTotp": { + "message": "Kinnituskood (TOTP)" + }, + "website": { + "message": "Veebileht" + }, + "notes": { + "message": "Märkmed" + }, + "customFields": { + "message": "Kohandatud väljad" + }, + "launch": { + "message": "Käivita" + }, + "copyValue": { + "message": "Kopeeri kirje", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimeeri programm pärast sisu kopeerimist" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimeerib programmi pärast kirje kopeerimist." + }, + "toggleVisibility": { + "message": "Näita sisu" + }, + "toggleCollapse": { + "message": "Ava", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kaardiomaniku nimi" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Väljastaja" + }, + "expiration": { + "message": "Aegumine" + }, + "securityCode": { + "message": "Turvakood" + }, + "identityName": { + "message": "identityName" + }, + "company": { + "message": "Ettevõte" + }, + "ssn": { + "message": "Isikukood" + }, + "passportNumber": { + "message": "Passi number" + }, + "licenseNumber": { + "message": "Litsentsi number" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefoninumber" + }, + "address": { + "message": "Aadress" + }, + "premiumRequired": { + "message": "Vajalik on Preemium versioon" + }, + "premiumRequiredDesc": { + "message": "Selle funktsiooni kasutamiseks on vajalik tasulist kontot omada." + }, + "errorOccurred": { + "message": "Ilmnes tõrge." + }, + "error": { + "message": "Viga" + }, + "january": { + "message": "Jaanuar" + }, + "february": { + "message": "Veebruar" + }, + "march": { + "message": "Märts" + }, + "april": { + "message": "Aprill" + }, + "may": { + "message": "Mai" + }, + "june": { + "message": "Juuni" + }, + "july": { + "message": "Juuli" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktoober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "Detsember" + }, + "ex": { + "message": "nt.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Pealkiri" + }, + "mr": { + "message": "Hr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Pr" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Aegumise kuu" + }, + "expirationYear": { + "message": "Aegumise aasta" + }, + "select": { + "message": "Vali" + }, + "other": { + "message": "Muu" + }, + "generatePassword": { + "message": "Loo parool" + }, + "type": { + "message": "Tüüp" + }, + "firstName": { + "message": "Eesnimi" + }, + "middleName": { + "message": "Teine eesnimi" + }, + "lastName": { + "message": "Perekonnanimi" + }, + "fullName": { + "message": "Täisnimi" + }, + "address1": { + "message": "Aadress 1" + }, + "address2": { + "message": "Aadress 2" + }, + "address3": { + "message": "Aadress 3" + }, + "cityTown": { + "message": "Linn / asula" + }, + "stateProvince": { + "message": "Maakond / vald" + }, + "zipPostalCode": { + "message": "Postiindeks" + }, + "country": { + "message": "Riik" + }, + "save": { + "message": "Salvesta" + }, + "cancel": { + "message": "Tühista" + }, + "delete": { + "message": "Kustuta" + }, + "favorite": { + "message": "Lemmik" + }, + "edit": { + "message": "Muuda" + }, + "authenticatorKeyTotp": { + "message": "Autentimise võti (TOTP)" + }, + "folder": { + "message": "Kaust" + }, + "newCustomField": { + "message": "Uus kohandatud väli" + }, + "value": { + "message": "Väärtus" + }, + "dragToSort": { + "message": "Lohista sorteerimiseks" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Peidetud" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Ühenduses", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Ühendatud väärtus", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Eemalda" + }, + "nameRequired": { + "message": "Nimi on kohustuslik." + }, + "addedItem": { + "message": "Kirje on lisatud" + }, + "editedItem": { + "message": "Kirje on muudetud" + }, + "deleteItem": { + "message": "Kustuta kirje" + }, + "deleteFolder": { + "message": "Kustuta Kaust" + }, + "deleteAttachment": { + "message": "Kustuta manus" + }, + "deleteItemConfirmation": { + "message": "Soovid tõesti selle kirje kustutada?" + }, + "deletedItem": { + "message": "Kirje on kustutatud" + }, + "overwritePasswordConfirmation": { + "message": "Oled kindel, et soovid olemasolevat parooli üle kirjutada?" + }, + "overwriteUsername": { + "message": "Kasutajanime ülekirjutamine" + }, + "overwriteUsernameConfirmation": { + "message": "Oled kindel, et soovid praegust kasutajanime üle kirjutada?" + }, + "noneFolder": { + "message": "Kaust puudub", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Kausta lisamine" + }, + "editFolder": { + "message": "Muuda kausta" + }, + "regeneratePassword": { + "message": "Genereeri parool uuesti" + }, + "copyPassword": { + "message": "Kopeeri parool" + }, + "copyUri": { + "message": "Kopeeri URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopeeri Kinnituskood (TOTP)" + }, + "length": { + "message": "Pikkus" + }, + "numWords": { + "message": "Sõnade arv" + }, + "wordSeparator": { + "message": "Sõna eraldaja" + }, + "capitalize": { + "message": "Suurtäht", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Lisa number" + }, + "close": { + "message": "Sulge" + }, + "minNumbers": { + "message": "Vähim arv numbreid" + }, + "minSpecial": { + "message": "Vähim arv spetsiaalmärke", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Väldi ebamääraseid kirjamärke" + }, + "searchCollection": { + "message": "Otsi kogumikku" + }, + "searchFolder": { + "message": "Otsi kausta" + }, + "searchFavorites": { + "message": "Otsi lemmikute hulgast" + }, + "searchType": { + "message": "Otsingu tüüp", + "description": "Search item type" + }, + "newAttachment": { + "message": "Lisa uus manus" + }, + "deletedAttachment": { + "message": "Manus on kustutatud" + }, + "deleteAttachmentConfirmation": { + "message": "Oled kindel, et soovid manuse kustutada?" + }, + "attachmentSaved": { + "message": "Manus on salvestatud." + }, + "file": { + "message": "Fail" + }, + "selectFile": { + "message": "Vali fail." + }, + "maxFileSize": { + "message": "Maksimaalne faili suurus on 500 MB." + }, + "updateKey": { + "message": "Seda funktsiooni ei saa enne krüpteerimise võtme uuendamist kasutada." + }, + "editedFolder": { + "message": "Kaust on muudetud" + }, + "addedFolder": { + "message": "Kaust on lisatud" + }, + "deleteFolderConfirmation": { + "message": "Oled kindel, et soovid seda kausta kustutada?" + }, + "deletedFolder": { + "message": "Kaust on kustutatud" + }, + "loginOrCreateNewAccount": { + "message": "Logi oma olemasolevasse kontosse sisse või loo uus konto." + }, + "createAccount": { + "message": "Konto loomine" + }, + "logIn": { + "message": "Logi sisse" + }, + "submit": { + "message": "Kinnita" + }, + "masterPass": { + "message": "Ülemparool" + }, + "masterPassDesc": { + "message": "Ülemparool on parool, millega pääsed oma kontole ligi. On äärmiselt tähtis, et ülemparool ei ununeks. Selle parooli taastamine ei ole mingil moel võimalik." + }, + "masterPassHintDesc": { + "message": "Vihje võib abiks olla olukorras, kui oled ülemparooli unustanud." + }, + "reTypeMasterPass": { + "message": "Sisesta ülemparool uuesti" + }, + "masterPassHint": { + "message": "Ülemparooli vihje (ei ole kohustuslik)" + }, + "settings": { + "message": "Seaded" + }, + "passwordHint": { + "message": "Parooli vihje" + }, + "enterEmailToGetHint": { + "message": "Ülemparooli vihje saamiseks sisesta oma konto e-posti aadress." + }, + "getMasterPasswordHint": { + "message": "Tuleta ülemparooli vihjega meelde" + }, + "emailRequired": { + "message": "E-posti aadress on nõutud." + }, + "invalidEmail": { + "message": "Vigane e-posti aadress." + }, + "masterPassRequired": { + "message": "Vajalik on ülemparooli sisestamine." + }, + "masterPassLength": { + "message": "Ülemparool peab olema vähemalt 8 tähemärgi pikkune." + }, + "masterPassDoesntMatch": { + "message": "Ülemparoolid ei ühti." + }, + "newAccountCreated": { + "message": "Sinu konto on loodud! Võid nüüd sisse logida." + }, + "masterPassSent": { + "message": "Ülemparooli vihje saadeti Sinu e-postile." + }, + "unexpectedError": { + "message": "Tekkis ootamatu viga." + }, + "itemInformation": { + "message": "Kirje andmed" + }, + "noItemsInList": { + "message": "Puuduvad kirjed, mida kuvada." + }, + "sendVerificationCode": { + "message": "Saada kinnituskood oma e-postile" + }, + "sendCode": { + "message": "Saada kood" + }, + "codeSent": { + "message": "Kood on saadetud" + }, + "verificationCode": { + "message": "Kinnituskood" + }, + "confirmIdentity": { + "message": "Jätkamiseks kinnita oma identiteet." + }, + "verificationCodeRequired": { + "message": "Nõutav on kinnituskood." + }, + "invalidVerificationCode": { + "message": "Vale kinnituskood" + }, + "continue": { + "message": "Jätka" + }, + "enterVerificationCodeApp": { + "message": "Sisesta autentimise rakendusest 6 kohaline number." + }, + "enterVerificationCodeEmail": { + "message": "Sisesta 6 kohaline number, mis saadeti e-posti aadressile $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Kinnituskood saadeti e-posti aadressile $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Jäta mind meelde" + }, + "sendVerificationCodeEmailAgain": { + "message": "Saada kinnituskood uuesti e-postile" + }, + "useAnotherTwoStepMethod": { + "message": "Kasuta teist kaheastmelist sisselogimise meetodit" + }, + "insertYubiKey": { + "message": "Sisesta oma YubiKey arvuti USB porti ja kliki sellele nupule." + }, + "insertU2f": { + "message": "Sisesta oma turvaline võti arvuti USB porti. Kui sellel on nupp, siis vajuta seda." + }, + "recoveryCodeDesc": { + "message": "Puudub ligipääs kaheastmelise kinnitamise teenusele? Kasuta Taastamise koodi, et kaheastmeline kinnitamine oma kontol välja lülitada." + }, + "recoveryCodeTitle": { + "message": "Taastamise kood" + }, + "authenticatorAppTitle": { + "message": "Autentimise rakendus" + }, + "authenticatorAppDesc": { + "message": "Kausta autentimise rakendust (näiteks Authy või Google Authenticator), et luua ajal baseeruvaid kinnituskoode.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Turvaline võti" + }, + "yubiKeyDesc": { + "message": "Kasuta kontole ligipääsemiseks YubiKey-d. See töötab YubiKey 4, 4 Nano, 4C ja NEO seadmetega." + }, + "duoDesc": { + "message": "Kinnita Duo Security abil, kasutades selleks Duo Mobile rakendust, SMS-i, telefonikõnet või U2F turvavõtit.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Kinnita organisatsiooni jaoks Duo Security abil, kasutades selleks Duo Mobile rakendust, SMS-i, telefonikõnet või U2F turvavõtit.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Kasuta mistahes WebAuthn toetavat turvalist võtit, et oma kontole ligi pääseda." + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Kinnituskoodid saadetakse e-postiga." + }, + "loginUnavailable": { + "message": "Sisselogimine ei ole saadaval" + }, + "noTwoStepProviders": { + "message": "Sellel kontol on aktiveeritud kaheastmeline kinnitus. Siiski ei toeta käesolev seade ühtegi aktiveeritud kaheastmelise kinnitamise teenust." + }, + "noTwoStepProviders2": { + "message": "Palun lisa täiendavaid kaheastmelise kinnitamise teenuse pakkujaid, mis toetavad rohkem seadmeid (näiteks mõni autentimisrakendus)." + }, + "twoStepOptions": { + "message": "Kaheastmelise sisselogimise valikud" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premise hosted bitwarden installation." + }, + "customEnvironment": { + "message": "Kohandatud keskkond" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Serveri URL" + }, + "apiUrl": { + "message": "API serveri URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Teavitus serveri URL" + }, + "iconsUrl": { + "message": "Ikoonide serveri URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Jah" + }, + "no": { + "message": "Ei" + }, + "overwritePassword": { + "message": "Kirjuta parool üle" + }, + "learnMore": { + "message": "Loe edasi" + }, + "featureUnavailable": { + "message": "Funktsioon pole saadaval" + }, + "loggedOut": { + "message": "Välja logitud" + }, + "loginExpired": { + "message": "Sessioon on aegunud." + }, + "logOutConfirmation": { + "message": "Oled kindel, et soovid välja logida?" + }, + "logOut": { + "message": "Logi välja" + }, + "addNewLogin": { + "message": "Lisa konto andmed" + }, + "addNewItem": { + "message": "Lisa uus kirje" + }, + "addNewFolder": { + "message": "Lisa uus kaust" + }, + "view": { + "message": "Vaata" + }, + "account": { + "message": "Konto" + }, + "loading": { + "message": "Laadimine..." + }, + "lockVault": { + "message": "Lukusta hoidla" + }, + "passwordGenerator": { + "message": "Parooli genereerimine" + }, + "contactUs": { + "message": "Võta ühendust" + }, + "getHelp": { + "message": "Klienditugi" + }, + "fileBugReport": { + "message": "Esita tarkvaraviga" + }, + "blog": { + "message": "Blogi" + }, + "followUs": { + "message": "Jälgi meid" + }, + "syncVault": { + "message": "Sünkroniseeri hoidla" + }, + "changeMasterPass": { + "message": "Muuda ülemparooli" + }, + "changeMasterPasswordConfirmation": { + "message": "Saad oma ülemparooli muuta bitwarden.com veebihoidlas. Soovid seda kohe teha?" + }, + "fingerprintPhrase": { + "message": "Sõrmejälje fraas", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Konto sõrmejälje fraas", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ava Veebihoidla" + }, + "getMobileApp": { + "message": "Hangi mobiilirakendus" + }, + "getBrowserExtension": { + "message": "Hangi brauseri lisa" + }, + "syncingComplete": { + "message": "Sünkroniseerimine on lõpetatud" + }, + "syncingFailed": { + "message": "Sünkroniseerimine nurjus" + }, + "yourVaultIsLocked": { + "message": "Hoidla on lukus. Jätkamiseks sisesta ülemparool." + }, + "unlock": { + "message": "Lukusta lahti" + }, + "loggedInAsOn": { + "message": "Sisse logitud kontoga $EMAIL$ aadressil $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Vale ülemparool" + }, + "twoStepLoginConfirmation": { + "message": "Kaheastmeline kinnitamine aitab konto turvalisust tõsta. Lisaks paroolile pead kontole ligipääsemiseks kinnitama sisselogimise päringu SMS-ga, telefonikõnega, autentimise rakendusega või e-postiga. Kaheastmelist kinnitust saab sisse lülitada bitwarden.com veebihoidlas. Soovid seda kohe avada?" + }, + "twoStepLogin": { + "message": "Kaheastmeline kinnitamine" + }, + "vaultTimeout": { + "message": "Hoidla ajalõpp" + }, + "vaultTimeoutDesc": { + "message": "Vali millal saabub hoidla ajalõpp ning sooritatakse valitud tegevus." + }, + "immediately": { + "message": "Koheselt" + }, + "tenSeconds": { + "message": "10 sekundi pärast" + }, + "twentySeconds": { + "message": "20 sekundi pärast" + }, + "thirtySeconds": { + "message": "30 sekundi pärast" + }, + "oneMinute": { + "message": "1 minuti pärast" + }, + "twoMinutes": { + "message": "2 minuti pärast" + }, + "fiveMinutes": { + "message": "5 minuti pärast" + }, + "fifteenMinutes": { + "message": "15 minuti pärast" + }, + "thirtyMinutes": { + "message": "30 minuti pärast" + }, + "oneHour": { + "message": "1 tunni pärast" + }, + "fourHours": { + "message": "4 tunni pärast" + }, + "onIdle": { + "message": "Kui arvuti on kasutuseta" + }, + "onSleep": { + "message": "Kui arvuti läheb unerežiimi" + }, + "onLocked": { + "message": "Kui arvuti lukustatakse" + }, + "onRestart": { + "message": "Arvuti taaskäivitamisel" + }, + "never": { + "message": "Mitte kunagi" + }, + "security": { + "message": "Turvalisus" + }, + "clearClipboard": { + "message": "Lõikelaua puhastamine", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Puhastab automaatselt lõikelauale kopeeritud sisu.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Keela veebilehel ikoonid" + }, + "disableFaviconDesc": { + "message": "Ikoonid aitavad hoidlas olevaid veebilehti paremini ära tunda." + }, + "enableMinToTray": { + "message": "Minimeeri tegumiribale" + }, + "enableMinToTrayDesc": { + "message": "Akna minimeerimisel kuvatakse rakendus süsteemisalve ikoonina." + }, + "enableMinToMenuBar": { + "message": "Minimeeri menüüribale" + }, + "enableMinToMenuBarDesc": { + "message": "Akna minimeerimisel kuvatakse rakendus menüüriba ikoonina." + }, + "enableCloseToTray": { + "message": "Minimeeri süsteemisalvele" + }, + "enableCloseToTrayDesc": { + "message": "Akna sulgemisel kuvatakse rakendus süsteemisalve ikoonina." + }, + "enableCloseToMenuBar": { + "message": "Sulge menüüribale" + }, + "enableCloseToMenuBarDesc": { + "message": "Akna sulgemisel kuva rakendus menüüriba ikoonina." + }, + "enableTray": { + "message": "Näita süsteemisalve ikooni" + }, + "enableTrayDesc": { + "message": "Kuva süsteemisalve ikoon alati." + }, + "startToTray": { + "message": "Käivita süsteemisalves" + }, + "startToTrayDesc": { + "message": "Rakenduse esmasel käivitusel kuvatakse seda ainult süsteemisalve ikoonina." + }, + "startToMenuBar": { + "message": "Käivita menüüribal" + }, + "startToMenuBarDesc": { + "message": "Rakenduse esmasel käivitusel kuvatakse selle ikooni ainult menüüribal." + }, + "openAtLogin": { + "message": "Käivita koos arvutiga" + }, + "openAtLoginDesc": { + "message": "Bitwardeni töölaua rakendus käivitatakse automaatselt koos arvutiga." + }, + "alwaysShowDock": { + "message": "Kuva alati Dockis" + }, + "alwaysShowDockDesc": { + "message": "Bitwardeni ikooni kuvatakse alati Dockis, isegi kui see on minimeeritud menüüribale." + }, + "confirmTrayTitle": { + "message": "Kinnita süsteemisalve ikooni keelamine" + }, + "confirmTrayDesc": { + "message": "Selle seadistuse keelamine lülitab välja ka teised süsteemisalve ikooniga seonduvad võimalused." + }, + "language": { + "message": "Keel" + }, + "languageDesc": { + "message": "Rakenduse poolt kasutatava keele muutmine. Vajalik on programmi taaskäivitus." + }, + "theme": { + "message": "Teema" + }, + "themeDesc": { + "message": "Muudab rakenduse värvikujundust." + }, + "dark": { + "message": "Tume", + "description": "Dark color" + }, + "light": { + "message": "Hele", + "description": "Light color" + }, + "copy": { + "message": "Kopeeri", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Otsi värskendusi" + }, + "version": { + "message": "Versioon $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Vajalik on rakenduse taaskäivitamine" + }, + "restartToUpdateDesc": { + "message": "Versioon $VERSION_NUM$ on paigaldamiseks valmis. Paigaldamise lõpetamiseks on vajalik Bitwarden taaskäivitada. Soovid seda kohe teha?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Saadaval on värskendus" + }, + "updateAvailableDesc": { + "message": "Soovid selle kohe alla laadida?" + }, + "restart": { + "message": "Taaskäivita" + }, + "later": { + "message": "Hiljem" + }, + "noUpdatesAvailable": { + "message": "Värskendusi ei ole saadaval. Kasutusel on viimane versioon." + }, + "updateError": { + "message": "Viga uuendamisel" + }, + "unknown": { + "message": "Tundmatu" + }, + "copyUsername": { + "message": "Kopeeri kasutajanimi" + }, + "copyNumber": { + "message": "Kopeeri number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopeeri turvakood", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Preemium versioon" + }, + "premiumManage": { + "message": "Halda Preemium versiooni" + }, + "premiumManageAlert": { + "message": "Saad Preemium versiooni hallata bitwarden.com veebihoidlas. Soovid seda kohe teha?" + }, + "premiumRefresh": { + "message": "Uuenda staatust" + }, + "premiumNotCurrentMember": { + "message": "Sa ei ole hetkel preemium versiooni kasutaja." + }, + "premiumSignUpAndGet": { + "message": "Preemium versiooni lisab järgmised eelised:" + }, + "premiumSignUpStorage": { + "message": "1 GB ulatuses krüpteeritud salvestusruum." + }, + "premiumSignUpTwoStep": { + "message": "Lisavõimalused kaheastmeliseks kinnitamiseks, näiteks YubiKey, FIDO U2F ja Duo." + }, + "premiumSignUpReports": { + "message": "Parooli hügieen, konto seisukord ja andmelekete raportid aitavad hoidlat turvalisena hoida." + }, + "premiumSignUpTotp": { + "message": "TOTP kinnituskoodide (2FA) genereerija hoidlas olevatele kasutajakontodele." + }, + "premiumSignUpSupport": { + "message": "Kiirema kasutajatoe." + }, + "premiumSignUpFuture": { + "message": "Tulevased preemium funktsioonid - tasuta!" + }, + "premiumPurchase": { + "message": "Osta Preemium" + }, + "premiumPurchaseAlert": { + "message": "Saad Preemium versiooni osta bitwarden.com veebihoidlas. Soovid seda kohe teha?" + }, + "premiumCurrentMember": { + "message": "Oled preemium kasutaja!" + }, + "premiumCurrentMemberThanks": { + "message": "Täname, et toetad bitwardenit." + }, + "premiumPrice": { + "message": "Kõik see ainult $PRICE$ / aastas!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Värskendamine lõpetatud" + }, + "passwordHistory": { + "message": "Paroolide ajalugu" + }, + "clear": { + "message": "Tühjenda", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Puuduvad paroolid, mida kuvada." + }, + "undo": { + "message": "Võta tagasi" + }, + "redo": { + "message": "Tee uuesti" + }, + "cut": { + "message": "Lõika", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Kleebi", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Vali kõik" + }, + "zoomIn": { + "message": "Suumi sisse" + }, + "zoomOut": { + "message": "Suumi välja" + }, + "resetZoom": { + "message": "Taasta suurendus" + }, + "toggleFullScreen": { + "message": "Lülita täisekraanile" + }, + "reload": { + "message": "Lae uuesti" + }, + "toggleDevTools": { + "message": "Lülita Arendaja tööriistad sisse" + }, + "minimize": { + "message": "Minimeeri", + "description": "Minimize window" + }, + "zoom": { + "message": "Suurenda" + }, + "bringAllToFront": { + "message": "Too kõik ette", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Rohkem infot" + }, + "services": { + "message": "Teenused" + }, + "hideBitwarden": { + "message": "Peida Bitwarden" + }, + "hideOthers": { + "message": "Peida teised" + }, + "showAll": { + "message": "Näita kõiki" + }, + "quitBitwarden": { + "message": "Välju Bitwardenist" + }, + "valueCopied": { + "message": "$VALUE$ on kopeeritud", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Abi" + }, + "window": { + "message": "Aken" + }, + "checkPassword": { + "message": "Vaata, kas parool on lekkinud." + }, + "passwordExposed": { + "message": "See parool on erinevates andmeleketes kokku $VALUE$ korda lekkinud. Peaksid selle ära muutma.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Seda parooli ei õnnestu andmeleketest leida. Parooli edasi kasutamine peaks olema turvaline." + }, + "baseDomain": { + "message": "Baasdomeen", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domeeni nimi", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Täpne" + }, + "startsWith": { + "message": "Algab" + }, + "regEx": { + "message": "RegEx", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Sobivuse tuvastamine", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Vaike sobivuse tuvastamine", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Valik sisse" + }, + "organization": { + "message": "Organisatsioon", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Vaikimisi" + }, + "exit": { + "message": "Välju" + }, + "showHide": { + "message": "Kuva / peida", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Peida süsteemisalve" + }, + "alwaysOnTop": { + "message": "Alati kõige peal", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Uuendatud", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parool on uuendatud", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Ekspordi hoidla" + }, + "fileFormat": { + "message": "Failivorming" + }, + "warning": { + "message": "HOIATUS", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Hoidla eksportimise kinnitamine" + }, + "exportWarningDesc": { + "message": "Eksporditav fail sisaldab hoidla sisu, mis on krüpteeringuta. Seda faili ei tohiks kaua käidelda ning mitte mingil juhul ebaturvaliselt saata (näiteks e-postiga). Kustuta see koheselt pärast kasutamist." + }, + "encExportKeyWarningDesc": { + "message": "Eksporditavate andmete krüpteerimiseks kasutatakse kontol olevat krüpteerimisvõtit. Kui sa peaksid seda krüpteerimise võtit roteerima, ei saa sa järgnevalt eksporditavaid andmeid enam dekrüpteerida." + }, + "encExportAccountWarningDesc": { + "message": "Iga Bitwardeni kasutaja krüpteerimisvõti on unikaalne. Eksporditud andmeid ei saa importida teise Bitwardeni kasutajakontosse." + }, + "noOrganizationsList": { + "message": "Sa ei kuulu ühessegi organisatsiooni. Organisatsioonid võimaldavad sul kirjeid turvaliselt teiste kasutajatega jagada." + }, + "noCollectionsInList": { + "message": "Puuduvad kollektsioonid, mida kuvada." + }, + "ownership": { + "message": "Omanik" + }, + "whoOwnsThisItem": { + "message": "Kes on selle kirje omanik?" + }, + "strong": { + "message": "Tugev", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Hea", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Nõrk", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Nõrk ülemparool" + }, + "weakMasterPasswordDesc": { + "message": "Valitud ülemparool on nõrk. Oma Bitwardeni konto paremaks kaitsmiseks peaksid kasutama tugevat parooli. Oled kindel, et soovid seda parooli ülemparoolina kasutada?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Ava PIN-iga" + }, + "setYourPinCode": { + "message": "Määra Bitwardeni lahtilukustamiseks PIN kood. Rakendusest täielikult välja logides nullitakse ka PIN koodi seaded." + }, + "pinRequired": { + "message": "Nõutakse PIN koodi." + }, + "invalidPin": { + "message": "Vale PIN kood." + }, + "unlockWithWindowsHello": { + "message": "Lukusta lahti Windows Helloga" + }, + "windowsHelloConsentMessage": { + "message": "Kinnita Bitwardenisse sisselogimine." + }, + "unlockWithTouchId": { + "message": "Lukusta lahti Touch ID-ga" + }, + "touchIdConsentMessage": { + "message": "Kinnita Bitwardenisse sisselogimine." + }, + "noAutoPromptWindowsHello": { + "message": "Ära küsi käivitudes Windows Hello't." + }, + "noAutoPromptTouchId": { + "message": "Ära küsi käivitudes Touch ID'd." + }, + "lockWithMasterPassOnRestart": { + "message": "Lukusta ülemparooliga, kui rakendus taaskäivitatakse" + }, + "preferences": { + "message": "Eelistused" + }, + "enableMenuBar": { + "message": "Lülita menüüriba ikoon sisse" + }, + "enableMenuBarDesc": { + "message": "Sisselülitatuna kuvatakse süsteemisalve ikooni alati." + }, + "hideToMenuBar": { + "message": "Peida süsteemisalve ikoon" + }, + "selectOneCollection": { + "message": "Pead valima vähemalt ühe kogumiku." + }, + "premiumUpdated": { + "message": "Oled nüüd Premium konto omanik." + }, + "restore": { + "message": "Taasta" + }, + "premiumManageAlertAppStore": { + "message": "Saad oma tellimust hallata App Store kaudu. Avan App Store?" + }, + "legal": { + "message": "Juriidiline info", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Kasutustingimused" + }, + "privacyPolicy": { + "message": "Privaatsuspoliitika" + }, + "unsavedChangesConfirmation": { + "message": "Oled kindel, et soovid lahkuda? Kui sa praegu lahkud, ei salvestata sisestatud või muudetud andmeid" + }, + "unsavedChangesTitle": { + "message": "Salvestamata muudatused" + }, + "clone": { + "message": "Klooni" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Organisatsiooni seaded mõjutavad parooli genereerija sätteid." + }, + "vaultTimeoutAction": { + "message": "Hoidla ajalõpu tegevus" + }, + "vaultTimeoutActionLockDesc": { + "message": "Lukustatud hoidla nõuab taaskordseks ligipääsuks ülemparooli uuesti sisestamist." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Hoidlast väljalogimine nõuab taaskordseks ligipääsuks uut autentimist." + }, + "lock": { + "message": "Lukusta", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Prügikast", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Otsi prügikastist" + }, + "permanentlyDeleteItem": { + "message": "Kustuta kirje jäädavalt" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Oled kindel, et soovid selle kirje jäädavalt kustutada?" + }, + "permanentlyDeletedItem": { + "message": "Kirje on jäädavalt kustutatud" + }, + "restoreItem": { + "message": "Taasta kirje" + }, + "restoreItemConfirmation": { + "message": "Oled kindel, et soovid selle kirje taastada?" + }, + "restoredItem": { + "message": "Kirje on taastatud" + }, + "permanentlyDelete": { + "message": "Kustuta kirje jäädavalt" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Väljalogimine eemaldab hoidlale ligipääsu ning nõuab pärast ajalõpu perioodi uuesti autentimist. Oled kindel, et soovid seda valikut kasutada?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Ajalõpu tegevuse kinnitamine" + }, + "enterpriseSingleSignOn": { + "message": "Ettevõtte Single Sign-On" + }, + "setMasterPassword": { + "message": "Määra ülemparool" + }, + "ssoCompleteRegistration": { + "message": "SSO-ga sisselogimise kinnitamiseks tuleb määrata ülemparool. See kaitseb sinu hoidlat ning võimaldab sellele ligi pääseda." + }, + "newMasterPass": { + "message": "Uus ülemparool" + }, + "confirmNewMasterPass": { + "message": "Kinnita uus ülemparool" + }, + "masterPasswordPolicyInEffect": { + "message": "Üks või enam organisatsiooni eeskirja nõuavad, et ülemparool vastaks nendele nõudmistele:" + }, + "policyInEffectMinComplexity": { + "message": "Minimaalne keerulisuse skoor peab olema $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimaalne pikkus peab olema $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Sisaldab üht või enamat suurtähte" + }, + "policyInEffectLowercase": { + "message": "Sisaldab üht või enamat väiketähte" + }, + "policyInEffectNumbers": { + "message": "Sisaldab üht või rohkem numbreid" + }, + "policyInEffectSpecial": { + "message": "Sisaldab üht või enamat järgnevatest märkidest: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Uus ülemparool ei vasta eeskirjades väljatoodud tingimustele." + }, + "acceptPolicies": { + "message": "Märkeruudu markeerimisel nõustud järgnevaga:" + }, + "acceptPoliciesError": { + "message": "Kasutustingimuste ja Privaatsuspoliitikaga pole nõustutud." + }, + "enableBrowserIntegration": { + "message": "Lülita sisse brauseri integratsioon" + }, + "enableBrowserIntegrationDesc": { + "message": "Brauseri integratsioon on vajalik biomeetria kasutamiseks brauseris." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Brauseri integratsioon ei ole toetatud" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Paraku on brauseri integratsioon hetkel toetatud ainult Mac App Store'i versioonis." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Brauseri integratsioon ei ole toetatud" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Paraku ei ole brauseri integratsioon hetkel Microsoft Store versioonis toetatud." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Nõua brauseri integratsiooni ülekinnitamist" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "See seadistus võimaldab täiendavat kaitset, küsides brauseriga liidestamisel sõrmejälje fraasi. Sisselülitamisel nõuab see seadistus igakordset kasutaja sekkumist, kui luuakse ühendus brauseri ja töölaua rakenduse vahel." + }, + "approve": { + "message": "Kinnita" + }, + "verifyBrowserTitle": { + "message": "Brauseri ühendamise kinnitamine" + }, + "verifyBrowserDesc": { + "message": "Veendu, et kuvatav sõrmejälje fraas on identne sellega, mida kuvatakse brauseri lisas." + }, + "biometricsNotEnabledTitle": { + "message": "Biomeetria ei ole sisse lülitatud" + }, + "biometricsNotEnabledDesc": { + "message": "Selleks, et kasutada biomeetriat brauseris, peab selle esmalt Bitwardeni töölaua rakenduse seadetes sisse lülitama." + }, + "personalOwnershipSubmitError": { + "message": "Ettevõtte poliitika tõttu ei saa sa andmeid oma personaalsesse Hoidlasse salvestada. Vali Omanikuks organisatsioon ja vali mõni saadavaolevatest Kogumikest." + }, + "hintEqualsPassword": { + "message": "Parooli vihje ei saa olla sama mis parool ise." + }, + "personalOwnershipPolicyInEffect": { + "message": "Organisatsiooni poliitika on seadnud omaniku valikutele piirangu." + }, + "allSends": { + "message": "Kõik Sendid", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fail" + }, + "sendTypeText": { + "message": "Tekst" + }, + "searchSends": { + "message": "Otsi Sende", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Muuda Sendi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Minu hoidla" + }, + "text": { + "message": "Tekst" + }, + "deletionDate": { + "message": "Kustutamise kuupäev" + }, + "deletionDateDesc": { + "message": "Send kustutatakse määratud kuupäeval ja kellaajal jäädavalt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Aegumiskuupäev" + }, + "expirationDateDesc": { + "message": "Selle valimisel ei pääse sellele Sendile enam pärast määratud kuupäeva ligi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimaalne ligipääsude arv" + }, + "maxAccessCountDesc": { + "message": "Selle valimisel ei saa kasutajad pärast maksimaalse ligipääsude arvu saavutamist sellele Sendile enam ligi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Hetkeline ligipääsude arv" + }, + "disableSend": { + "message": "Keela see Send, et keegi ei pääseks sellele ligi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Soovi korral nõua parooli, millega Sendile ligi pääseb.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Privaatne märkus selle Sendi kohta.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Sendi link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Sendi link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Sendi avamisel peida tekst automaatselt", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send on loodud", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Muudetud", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send on kustutatud", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Uus Parool" + }, + "whatTypeOfSend": { + "message": "Mis tüüpi Send see on?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Loo Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Tekst, mida soovid saata." + }, + "sendFileDesc": { + "message": "Fail, mida soovid saata." + }, + "days": { + "message": "$DAYS$ päeva", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 päev" + }, + "custom": { + "message": "Kohandatud" + }, + "deleteSendConfirmation": { + "message": "Soovid tõesti selle Sendi kustutada?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopeeri Sendi link lõikelauale", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Salvestamisel kopeeri Sendi jagamise link lõikepuhvrisse." + }, + "sendDisabled": { + "message": "Send on väljalülitatud", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Ettevõtte poliitika kohaselt saad ainult olemasolevat Sendi kustutada.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopeeri link" + }, + "disabled": { + "message": "Keelatud" + }, + "maxAccessCountReached": { + "message": "Maksimaalne ligipääsude arv on saavutatud" + }, + "expired": { + "message": "Aegunud" + }, + "pendingDeletion": { + "message": "Kustutamise ootel" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn kinnitamine" + }, + "hideEmail": { + "message": "Ära näita saajatele minu e-posti aadressi." + }, + "sendOptionsPolicyInEffect": { + "message": "Organisatsiooni seaded mõjutavad sinu Sendi sätteid." + }, + "emailVerificationRequired": { + "message": "Vajalik on e-posti kinnitamine" + }, + "emailVerificationRequiredDesc": { + "message": "Enne selle funktsiooni kasutamist pead oma e-posti kinnitama." + }, + "passwordPrompt": { + "message": "Nõutav on ülemparool" + }, + "passwordConfirmation": { + "message": "Ülemparooli kinnitamine" + }, + "passwordConfirmationDesc": { + "message": "See tegevus on kaitstud. Jätkamiseks sisesta oma ülemparool." + }, + "updatedMasterPassword": { + "message": "Uuendas ülemparooli" + }, + "updateMasterPassword": { + "message": "Ülemparooli uuendamine" + }, + "updateMasterPasswordWarning": { + "message": "Organisatsiooni administraator muutis hiljuti sinu ülemparooli. Hoidlale ligi pääsemiseks pead seda nüüd uuendama. Jätkates logitakse sind käimasolevast sessioonist välja, misjärel nõutakse uuesti sisselogimist. Teistes seadmetes olevad aktiivsed sessioonid jäävad aktiivseks kuni üheks tunniks." + }, + "hours": { + "message": "Tundi" + }, + "minutes": { + "message": "Minutit" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Organisatsiooni poliitikad mõjutavad sinu hoidla ajalõppu. Maksimaalne lubatud hoidla ajalõpp on $HOURS$ tund(i) ja $MINUTES$ minut(it)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Valitud hoidla ajalõpp ei ole organisatsiooni poolt määratud reeglitega kooskõlas." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automaatne liitumine" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Selle organisatsiooni poliitika kohaselt liidetakse sind automaatselt ülemparooli lähtestamise funktsiooniga. Liitumisel saavad organisatsiooni administraatorid sinu ülemparooli muuta." + }, + "vaultExportDisabled": { + "message": "Hoidla eksportimine on väljalülitatud" + }, + "personalVaultExportPolicyInEffect": { + "message": "Üks või enam organisatsiooni poliitikat ei võimalda sul oma personaalset hoidlat eksportida." + }, + "addAccount": { + "message": "Lisa konto" + }, + "removeMasterPassword": { + "message": "Eemalda ülemparool" + }, + "removedMasterPassword": { + "message": "Ülemparool on eemaldatud." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ kasutab SSO-d koos enda majutatud võtmeserveriga. Selle organisatsiooni liikmed ei pea sisselogimisel enam ülemparooli kasutama.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Lahku organisatsioonist" + }, + "leaveOrganizationConfirmation": { + "message": "Kas oled kindel, et soovid sellest organisatsioonist lahkuda?" + }, + "leftOrganization": { + "message": "Oled organisatsioonist lahkunud." + }, + "ssoKeyConnectorUnavailable": { + "message": "Ühenduse loomine ebaõnnestus. Proovi hiljem uuesti." + }, + "lockAllVaults": { + "message": "Lukusta kõik hoidlad" + }, + "accountLimitReached": { + "message": "Korraga ei tohi olla sisse logitud rohkem kui 5 kontot." + }, + "accountPreferences": { + "message": "Eelistused" + }, + "appPreferences": { + "message": "Rakenduse seaded (kõik kontod)" + }, + "accountSwitcherLimitReached": { + "message": "Kontode limiit on saavutatud. Teise konto lisamiseks pead esmalt välja logima." + }, + "settingsTitle": { + "message": "Rakenduse seaded e-postile $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Vaheta kontot" + }, + "options": { + "message": "Valikud" + }, + "sessionTimeout": { + "message": "Sessioon on aegunud. Palun mine tagasi ja proovi uuesti sisse logida." + }, + "exportingPersonalVaultTitle": { + "message": "Personaalse hoidla eksportimine" + }, + "exportingPersonalVaultDescription": { + "message": "Ainult personaalsed $EMAIL$ alla kuuluvad kirjed eksportidakse. Organisatsiooni kirjeid ei ekspordita.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Genereerija" + }, + "whatWouldYouLikeToGenerate": { + "message": "Mida sa soovid genereerida?" + }, + "passwordType": { + "message": "Parooli tüüp" + }, + "regenerateUsername": { + "message": "Genereeri kasutajanimi uuesti" + }, + "generateUsername": { + "message": "Genereeri kasutajanimi" + }, + "usernameType": { + "message": "Kasutajanime tüüp" + }, + "plusAddressedEmail": { + "message": "Lisaks e-post" + }, + "plusAddressedEmailDesc": { + "message": "Kasuta e-posti teenuspakkuja alamadressimise võimalusi." + }, + "catchallEmail": { + "message": "Kogumisaadress" + }, + "catchallEmailDesc": { + "message": "Kasuta domeenipõhist kogumisaadressi." + }, + "random": { + "message": "Juhuslik" + }, + "randomWord": { + "message": "Juhuslik sõna" + }, + "websiteName": { + "message": "Veebilehe nimi" + }, + "service": { + "message": "Teenus" + } +} diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json new file mode 100644 index 0000000000..8642c5b04e --- /dev/null +++ b/apps/desktop/src/locales/fa/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "فیلترها" + }, + "allItems": { + "message": "تمام موارد" + }, + "favorites": { + "message": "مورد علاقه" + }, + "types": { + "message": "انواع" + }, + "typeLogin": { + "message": "ورود" + }, + "typeCard": { + "message": "کارت" + }, + "typeIdentity": { + "message": "مشخصات" + }, + "typeSecureNote": { + "message": "یادداشت امن" + }, + "folders": { + "message": "پوشه‌ها" + }, + "collections": { + "message": "مجموعه‌ها" + }, + "searchVault": { + "message": "جستجوی گاوصندوق" + }, + "addItem": { + "message": "افزودن مورد" + }, + "shared": { + "message": "اشتراک گذاری شد" + }, + "share": { + "message": "اشتراک‌گذاری" + }, + "moveToOrganization": { + "message": "انتقال به سازمان" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ منتقل شد به $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "سازمانی را انتخاب کنید که می خواهید این مورد را به آن منتقل کنید. انتقال به یک سازمان، مالکیت مورد را به آن سازمان منتقل می کند. پس از انتقال این مورد، دیگر مالک مستقیم آن نخواهید بود." + }, + "attachments": { + "message": "پیوست‌ها" + }, + "viewItem": { + "message": "مشاهده مورد" + }, + "name": { + "message": "نام" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "URI جدید" + }, + "username": { + "message": "نام کاربری" + }, + "password": { + "message": "کلمه عبور" + }, + "passphrase": { + "message": "عبارت عبور" + }, + "editItem": { + "message": "ویرایش مورد" + }, + "emailAddress": { + "message": "نشانی رایانامه" + }, + "verificationCodeTotp": { + "message": "کد تایید (TOTP)" + }, + "website": { + "message": "وب سایت" + }, + "notes": { + "message": "یادداشت‌ها" + }, + "customFields": { + "message": "فیلدهای سفارشی" + }, + "launch": { + "message": "راه اندازی" + }, + "copyValue": { + "message": "رونوشت مقدار", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "پایین کشیدن پنجره موقع کپی کردن در کلیپ بورد" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "پایین کشیدن پنجره موقع کپی کردن اطلاعات یک مورد در کلیپ بورد." + }, + "toggleVisibility": { + "message": "نمایش" + }, + "toggleCollapse": { + "message": "باز و بسته کردن", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "نام صاحب کارت" + }, + "number": { + "message": "شماره" + }, + "brand": { + "message": "نام تجاری" + }, + "expiration": { + "message": "انقضاء" + }, + "securityCode": { + "message": "کد امنیتی" + }, + "identityName": { + "message": "نام شناسایی" + }, + "company": { + "message": "شرکت" + }, + "ssn": { + "message": "شماره امنیتی اجتماعی" + }, + "passportNumber": { + "message": "شماره پاسپورت" + }, + "licenseNumber": { + "message": "شماره مجوز" + }, + "email": { + "message": "رایانامه" + }, + "phone": { + "message": "تلفن" + }, + "address": { + "message": "نشانی" + }, + "premiumRequired": { + "message": "در نسخه پرمیوم کار می‌کند" + }, + "premiumRequiredDesc": { + "message": "برای استفاده از این ویژگی عضویت پرمیوم لازم است." + }, + "errorOccurred": { + "message": "خطایی رخ داده است." + }, + "error": { + "message": "خطا" + }, + "january": { + "message": "ژانویه" + }, + "february": { + "message": "فوریه" + }, + "march": { + "message": "مارس" + }, + "april": { + "message": "آوریل" + }, + "may": { + "message": "مِی" + }, + "june": { + "message": "ژوئن" + }, + "july": { + "message": "جولای" + }, + "august": { + "message": "آگوست‌" + }, + "september": { + "message": "سپتامبر" + }, + "october": { + "message": "اکتبر" + }, + "november": { + "message": "نوامبر" + }, + "december": { + "message": "دسامبر" + }, + "ex": { + "message": "مثال.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "عنوان" + }, + "mr": { + "message": "آقا" + }, + "mrs": { + "message": "بانو" + }, + "ms": { + "message": "خانم" + }, + "dr": { + "message": "دکتر" + }, + "expirationMonth": { + "message": "ماه انقضاء" + }, + "expirationYear": { + "message": "سال انقضاء" + }, + "select": { + "message": "انتخاب" + }, + "other": { + "message": "ساير" + }, + "generatePassword": { + "message": "تولید کلمه عبور" + }, + "type": { + "message": "نوع" + }, + "firstName": { + "message": "نام" + }, + "middleName": { + "message": "نام میانی" + }, + "lastName": { + "message": "نام خانوادگی" + }, + "fullName": { + "message": "نام کامل" + }, + "address1": { + "message": "نشانی ۱" + }, + "address2": { + "message": "نشانی ۲" + }, + "address3": { + "message": "نشانی ۳" + }, + "cityTown": { + "message": "شهر / شهرک" + }, + "stateProvince": { + "message": "ایالت / استان" + }, + "zipPostalCode": { + "message": "کد پستی" + }, + "country": { + "message": "کشور" + }, + "save": { + "message": "ذخیره" + }, + "cancel": { + "message": "انصراف" + }, + "delete": { + "message": "حذف" + }, + "favorite": { + "message": "مورد علاقه" + }, + "edit": { + "message": "ویرایش" + }, + "authenticatorKeyTotp": { + "message": "کلید تاییدکننده (TOTP)" + }, + "folder": { + "message": "پوشه" + }, + "newCustomField": { + "message": "فیلد سفارشی جدید" + }, + "value": { + "message": "مقدار" + }, + "dragToSort": { + "message": "برای مرتب کردن بکشید" + }, + "cfTypeText": { + "message": "متن" + }, + "cfTypeHidden": { + "message": "مخفی" + }, + "cfTypeBoolean": { + "message": "بولی" + }, + "cfTypeLinked": { + "message": "لینک شده", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "ارزش لینک شده", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "حذف" + }, + "nameRequired": { + "message": "نام ضروری است." + }, + "addedItem": { + "message": "مورد افزوده شد" + }, + "editedItem": { + "message": "مورد ویرایش شد" + }, + "deleteItem": { + "message": "حذف مورد" + }, + "deleteFolder": { + "message": "حذف پوشه" + }, + "deleteAttachment": { + "message": "حذف پیوست" + }, + "deleteItemConfirmation": { + "message": "آیا مطمئن هستید که می‌خواهید این مورد را حذف کنید؟" + }, + "deletedItem": { + "message": "مورد حذف شد" + }, + "overwritePasswordConfirmation": { + "message": "آیا از بازنویسی بر روی پسورد فعلی مطمئن هستید؟" + }, + "overwriteUsername": { + "message": "بازنویسی نام کاربری" + }, + "overwriteUsernameConfirmation": { + "message": "آیا از بازنویسی نام کاربری فعلی مطمئن هستید؟" + }, + "noneFolder": { + "message": "بدون پوشه", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "افزودن پوشه" + }, + "editFolder": { + "message": "ويرايش پوشه" + }, + "regeneratePassword": { + "message": "تولید دوباره کلمه عبور" + }, + "copyPassword": { + "message": "رونوشت کلمه عبور" + }, + "copyUri": { + "message": "رونوشت URI" + }, + "copyVerificationCodeTotp": { + "message": "کپی کد تأیید (TOTP)" + }, + "length": { + "message": "طول" + }, + "numWords": { + "message": "تعداد کلمات" + }, + "wordSeparator": { + "message": "جداکننده کلمات" + }, + "capitalize": { + "message": "بزرگ نوشتن حرف اول", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "شامل عدد" + }, + "close": { + "message": "بستن" + }, + "minNumbers": { + "message": "حداقل اعداد" + }, + "minSpecial": { + "message": "حداقل حرف خاص", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "از کاراکترهای مبهم اجتناب شود" + }, + "searchCollection": { + "message": "جستجوی مجموعه" + }, + "searchFolder": { + "message": "جستجوی پوشه" + }, + "searchFavorites": { + "message": "جستجوی مورد علاقه‌ها" + }, + "searchType": { + "message": "نوع جستجو", + "description": "Search item type" + }, + "newAttachment": { + "message": "افزودن پیوست جدید" + }, + "deletedAttachment": { + "message": "پیوست حذف شد" + }, + "deleteAttachmentConfirmation": { + "message": "آیا از پاک کردن این پیوست مطمئن هستید؟" + }, + "attachmentSaved": { + "message": "پیوست ذخیره شد." + }, + "file": { + "message": "پرونده" + }, + "selectFile": { + "message": "ﺍﻧﺘﺨﺎﺏ یک ﭘﺮﻭﻧﺪﻩ." + }, + "maxFileSize": { + "message": "بیشترین حجم فایل ۱۰۰ مگابایت است." + }, + "updateKey": { + "message": "تا زمانی که کد رمزنگاری را بروز نکنید نمی‌توانید از این قابلیت استفاده کنید." + }, + "editedFolder": { + "message": "پوشه ویرایش شد" + }, + "addedFolder": { + "message": "پوشه اضافه شد" + }, + "deleteFolderConfirmation": { + "message": "آیا از حذف این پوشه اطمینان دارید؟" + }, + "deletedFolder": { + "message": "پوشه حذف شد" + }, + "loginOrCreateNewAccount": { + "message": "وارد شوید یا یک حساب کاربری بسازید تا به گاوصندوق امنتان دسترسی یابید." + }, + "createAccount": { + "message": "ایجاد حساب کاربری" + }, + "logIn": { + "message": "ورود" + }, + "submit": { + "message": "ثبت" + }, + "masterPass": { + "message": "کلمه عبور اصلی" + }, + "masterPassDesc": { + "message": "کلمه عبور اصلی کلمه عبوری است که شما برای دسترسی به گاوصندوق خود استفاده می‌کنید. بیاد داشتن کلمه عبور اصلی بسیار اهمیت دارد. اگر آن را فراموش کنید هیچ راهی برای بازگردانی آن وجود ندارد." + }, + "masterPassHintDesc": { + "message": "راهنمای کلمه عبور اصلی می تواند کمک کند تا در صورت فراموشی آن را بیاد بیاورید." + }, + "reTypeMasterPass": { + "message": "نوشتن دوباره کلمه عبور اصلی" + }, + "masterPassHint": { + "message": "راهنمای کلمه عبور اصلی (اختیاری)" + }, + "settings": { + "message": "تنظیمات" + }, + "passwordHint": { + "message": "راهنمای کلمه عبور" + }, + "enterEmailToGetHint": { + "message": "برای دریافت راهنمای کلمه عبور اصلی خود آدرس رایانامه‌تان را وارد کنید." + }, + "getMasterPasswordHint": { + "message": "دریافت راهنمای کلمه عبور اصلی" + }, + "emailRequired": { + "message": "نشانی رایانامه ضروری است." + }, + "invalidEmail": { + "message": "نشانی رایانامه نامعتبر است." + }, + "masterPassRequired": { + "message": "کلمه عبور اصلی ضروری است." + }, + "masterPassLength": { + "message": "طول کلمه عبور اصلی باید حداقل ۸ کاراکتر باشد." + }, + "masterPassDoesntMatch": { + "message": "کلمه عبور اصلی با تکرار آن مطابقت ندارد." + }, + "newAccountCreated": { + "message": "حساب جدید شما ساخته شد! حالا می‌توانید وارد شوید." + }, + "masterPassSent": { + "message": "ما یک رایانامه همراه با راهنمای کلمه عبور اصلی برایتان ارسال کردیم." + }, + "unexpectedError": { + "message": "یک خطای غیر منتظره رخ داده است." + }, + "itemInformation": { + "message": "اطلاعات مورد" + }, + "noItemsInList": { + "message": "هیچ موردی برای نمایش وجود ندارد." + }, + "sendVerificationCode": { + "message": "ارسال یک کد تأیید به ایمیل شما" + }, + "sendCode": { + "message": "ارسال کد" + }, + "codeSent": { + "message": "کد ارسال شد" + }, + "verificationCode": { + "message": "کد تایید" + }, + "confirmIdentity": { + "message": "برای ادامه هویت خود را تأیید کنید." + }, + "verificationCodeRequired": { + "message": "کد تایید مورد نیاز است." + }, + "invalidVerificationCode": { + "message": "کد تایید نامعتبر" + }, + "continue": { + "message": "ادامه" + }, + "enterVerificationCodeApp": { + "message": "کد تایید ۶ رقمی را از برنامه تایید کننده‌تان وارد کنید." + }, + "enterVerificationCodeEmail": { + "message": "کد تایید ۶ رقمی که به $EMAIL$ ارسال شد را وارد کنید.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "رایانامه تایید به $EMAIL$ ارسال شد.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "مرا به خاطر بسپار" + }, + "sendVerificationCodeEmailAgain": { + "message": "ارسال دوباره رایانامه کد تایید" + }, + "useAnotherTwoStepMethod": { + "message": "استفاده از روش ورود دو مرحله‌ای دیگر" + }, + "insertYubiKey": { + "message": "YubiKey خود را وارد پورت USB رایانه کنید، بعد دکمه آن را بفشارید." + }, + "insertU2f": { + "message": "کلید امنیتی خود را وارد پورت USB رایانه کنید، اگر دکمه‌ای دارد آن را بفشارید." + }, + "recoveryCodeDesc": { + "message": "دسترسی به تمامی ارائه‌دهندگان دو مرحله‌ای را از دست داده‌اید؟ از کد بازیابی خود برای غیرفعال‌سازی ارائه‌دهندگان دو مرحله‌ای حسابتان استفاده کنید." + }, + "recoveryCodeTitle": { + "message": "کد بازیابی" + }, + "authenticatorAppTitle": { + "message": "برنامه تاییدکننده" + }, + "authenticatorAppDesc": { + "message": "از یک برنامه تاییدکننده (همانند Authy یا Google Authenticator) استفاده کنید تا کدهای تایید بر پایه زمان تولید کنید.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "کلید امنیتی YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "از یک YubiKey برای دسترسی به حسابتان استفاده کنید. همراه با دستگاه‌های YubiKey 4،4 Nano، NEO کار میکند." + }, + "duoDesc": { + "message": "با Duo Security با استفاده از برنامه تلفن همراه، پیامک، تماس تلفنی، یا کلید امنیتی U2F تایید کنید.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "از Duo Security با استفاده از برنامه تلفن همراه، پیامک، تماس تلفنی یا کلید امنیتی U2F برای تایید سازمان خود استفاده کنید.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "برای دسترسی به حساب خود از هر کلید امنیتی فعال شده WebAuthn استفاده کنید." + }, + "emailTitle": { + "message": "رایانامه" + }, + "emailDesc": { + "message": "کد تایید برایتان ارسال می‌شود." + }, + "loginUnavailable": { + "message": "ورود به سیستم موجود نیست" + }, + "noTwoStepProviders": { + "message": "ورود دو مرحله‌ای برای این حساب فعال است، با این حال، هیچ یک از ارائه‌دهندگان دو مرحله‌ای پیکربندی شده توسط این دستگاه پشتیبانی‌نمی شوند." + }, + "noTwoStepProviders2": { + "message": "لطفا ارائه‌دهندگان دیگری را که بهتر در سایر دستگاه‌ها پشتیبانی می‌شوند اضافه کنید (همانند یک برنامه تاییدکننده)." + }, + "twoStepOptions": { + "message": "گزینه‌های ورود دو مرحله‌ای" + }, + "selfHostedEnvironment": { + "message": "محیط خود میزبان" + }, + "selfHostedEnvironmentFooter": { + "message": "آدرس اینترنتی پایه نصب Bitwarden میزبانی شده را مشخص کنید." + }, + "customEnvironment": { + "message": "محیط سفارشی" + }, + "customEnvironmentFooter": { + "message": "برای کاربران پیشرفته. شما می‌توانید آدرس پایه هر سرویس را به صورت مستقل تعیین کنید." + }, + "baseUrl": { + "message": "نشانی سرور" + }, + "apiUrl": { + "message": "نشانی API سرور" + }, + "webVaultUrl": { + "message": "نشانی سرور گاوصندوق وب" + }, + "identityUrl": { + "message": "نشانی سرور شناسایی" + }, + "notificationsUrl": { + "message": "نشانی سرور اعلان‌ها" + }, + "iconsUrl": { + "message": "نشانی سرور آیکون‌ها" + }, + "environmentSaved": { + "message": "نشانی‌های اینترنتی محیط ذخیره شدند." + }, + "ok": { + "message": "تایید" + }, + "yes": { + "message": "بله" + }, + "no": { + "message": "خیر" + }, + "overwritePassword": { + "message": "بازنویسی کلمه عبور" + }, + "learnMore": { + "message": "بیشتر بدانید" + }, + "featureUnavailable": { + "message": "ویژگی موجود نیست" + }, + "loggedOut": { + "message": "خارج شد" + }, + "loginExpired": { + "message": "نشست ورود شما منقضی شده است." + }, + "logOutConfirmation": { + "message": "آیا مطمئنید که می‌خواهید خارج شوید؟" + }, + "logOut": { + "message": "خروج" + }, + "addNewLogin": { + "message": "افزودن ورود جدید" + }, + "addNewItem": { + "message": "افزودن مورد جدید" + }, + "addNewFolder": { + "message": "افزودن پوشه جدید" + }, + "view": { + "message": "مشاهده" + }, + "account": { + "message": "حساب" + }, + "loading": { + "message": "درحال بارگذاری..." + }, + "lockVault": { + "message": "قفل کردن گاوصندوق" + }, + "passwordGenerator": { + "message": "تولید کننده کلمه عبور" + }, + "contactUs": { + "message": "تماس با ما" + }, + "getHelp": { + "message": "کمک گرفتن" + }, + "fileBugReport": { + "message": "گزارش یک مشکل" + }, + "blog": { + "message": "وبلاگ" + }, + "followUs": { + "message": "ﻣﺎ ﺭﺍ ﺩﻧﺒﺎﻝ ﮐﻨﻴﺪ" + }, + "syncVault": { + "message": "همگام سازی گاوصندوق" + }, + "changeMasterPass": { + "message": "تغییر کلمه عبور اصلی" + }, + "changeMasterPasswordConfirmation": { + "message": "شما می‌توانید کلمه عبور اصلی خود را در bitwarden.com تغییر دهید. آیا می‌خواهید از سایت بازدید کنید؟" + }, + "fingerprintPhrase": { + "message": "عبارت اثر انگشت", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "عبارت اثر انگشت حساب شما", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "برو به گاوصندق وب" + }, + "getMobileApp": { + "message": "دریافت برنامه تلفن همراه" + }, + "getBrowserExtension": { + "message": "دریافت افزونه مرورگر" + }, + "syncingComplete": { + "message": "همگام سازی کامل شد" + }, + "syncingFailed": { + "message": "همگام سازی ناموفق بود" + }, + "yourVaultIsLocked": { + "message": "گاوصندوق شما فقل شد. برای ادامه کلمه عبور اصلی را وارد کنید." + }, + "unlock": { + "message": "باز کردن قفل" + }, + "loggedInAsOn": { + "message": "وارد شده با $EMAIL$ در $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "کلمه عبور اصلی نامعتبر است" + }, + "twoStepLoginConfirmation": { + "message": "ورودی دو مرحله‌ای باعث می‌شود که حساب کاربری شما با استفاده از یک دستگاه دیگر مانند کلید امنیتی، برنامه تایید هویت، پیامک، تماس تلفنی و یا رایانامه، اعتبار خود را با ایمنی بیشتر ثابت کند. ورود دو مرحله‌ای می‌تواند در bitwarden.com فعال شود. آیا می‌خواهید از سایت بازدید کنید؟" + }, + "twoStepLogin": { + "message": "ورود دو مرحله‌ای" + }, + "vaultTimeout": { + "message": "متوقف شدن گاو‌صندوق" + }, + "vaultTimeoutDesc": { + "message": "انتخاب کنید که گاو‌صندوق شما چه موقع متوقف شود و عملکرد انتخاب شده را انجام دهد." + }, + "immediately": { + "message": "بلافاصله" + }, + "tenSeconds": { + "message": "۱۰ ثانیه" + }, + "twentySeconds": { + "message": "۲۰ ثانیه" + }, + "thirtySeconds": { + "message": "۳۰ ثانیه" + }, + "oneMinute": { + "message": "۱ دقیقه" + }, + "twoMinutes": { + "message": "۲ دقیقه" + }, + "fiveMinutes": { + "message": "۵ دقیقه" + }, + "fifteenMinutes": { + "message": "۱۵ دقیقه" + }, + "thirtyMinutes": { + "message": "۳۰ دقیقه" + }, + "oneHour": { + "message": "۱ ساعت" + }, + "fourHours": { + "message": "۴ ساعت" + }, + "onIdle": { + "message": "هنگام بیکاری سیستم" + }, + "onSleep": { + "message": "هنگام خواب سیستم" + }, + "onLocked": { + "message": "هنگام قفل سیستم" + }, + "onRestart": { + "message": "هنگام راه اندازی مجدد" + }, + "never": { + "message": "هرگز" + }, + "security": { + "message": "امنیت" + }, + "clearClipboard": { + "message": "پاک‌سازی کلیپ‌برد", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "به صورت خودکار، مقادیر رونوشت شده را از کلیپ‌برد پاک کن.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "غیرفعال‌سازی آیکون‌های وبسایت" + }, + "disableFaviconDesc": { + "message": "آیکون‌های وبسایت یک تصویر قابل تشخیص در کنار هر داده ورودی ارائه می‌دهد." + }, + "enableMinToTray": { + "message": "کوچک کردن به نماد Tray" + }, + "enableMinToTrayDesc": { + "message": "هنگام کوچک‌کردن پنچره، یک نماد در قسمت نمادهای سیستم بجای آن نشان بده." + }, + "enableMinToMenuBar": { + "message": "به نوار منو کوچک کنید" + }, + "enableMinToMenuBarDesc": { + "message": "هنگام کوچک کردن پنجره، به جای آن یک نماد در نوار منو نشان بده." + }, + "enableCloseToTray": { + "message": "بستن به نماد Tray" + }, + "enableCloseToTrayDesc": { + "message": "هنگام بستن پنچره، یک نماد در قسمت نمادهای سیستم بجای آن نشان بده." + }, + "enableCloseToMenuBar": { + "message": "بستن به نوار منو" + }, + "enableCloseToMenuBarDesc": { + "message": "هنگام بستن پنجره، به جای آن یک نماد در نوار منو نشان دهید." + }, + "enableTray": { + "message": "فعال کردن نماد Tray" + }, + "enableTrayDesc": { + "message": "همیشه یک نماد در قسمت نمادهای سیستم نشان بده." + }, + "startToTray": { + "message": "در زمان شروع، به نماد Tray برو" + }, + "startToTrayDesc": { + "message": "زمانی که برنامه برای بار اول شروع می‌شود، فقط یک نماد در نمادهای سیستم نشان بده." + }, + "startToMenuBar": { + "message": "شروع به نوار منو" + }, + "startToMenuBarDesc": { + "message": "زمانی که برنامه برای بار اول شروع می‌شود، فقط یک نماد در نوار منو نشان بده." + }, + "openAtLogin": { + "message": "هنگام ورود به سیستم به طور خودکار شروع کنید" + }, + "openAtLoginDesc": { + "message": "برنامه دستکتاپ Bitwarden را به طور خودکار هنگام ورود به سیستم شروع کنید." + }, + "alwaysShowDock": { + "message": "همیشه در داک نشان بده" + }, + "alwaysShowDockDesc": { + "message": "نماد Bitwarden را در داک نمایش بده حتی زمانی که به نوار منو کوچک شود." + }, + "confirmTrayTitle": { + "message": "غیرفعال کردن tray را تأیید کنید" + }, + "confirmTrayDesc": { + "message": "غیرفعال کردن این تنظیم تمام تنظیمات مربوط به tray را غیرفعال می کند." + }, + "language": { + "message": "زبان" + }, + "languageDesc": { + "message": "تغییر زبان مورد استفاده برنامه انجام شد. نیاز به راه اندازی مجدد." + }, + "theme": { + "message": "پوسته" + }, + "themeDesc": { + "message": "تغییر رنگ پوسته برنامه." + }, + "dark": { + "message": "تیره", + "description": "Dark color" + }, + "light": { + "message": "روشن", + "description": "Light color" + }, + "copy": { + "message": "رونوشت", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "بررسی برای بروزرسانی‌ها" + }, + "version": { + "message": "نسخه $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "برای بروزرسانی راه اندازی مجدد کنید" + }, + "restartToUpdateDesc": { + "message": "نسخه $VERSION_NUM$ آماده نصب است. برای تکمیل نصب باید Bitwarden را مجددا راه اندازی کنید. آیا تمایل به راه اندازی مجدد و بروزرسانی دارید؟", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "بروزرسانی موجود است" + }, + "updateAvailableDesc": { + "message": "یک بروزرسانی یافت شد. مایل به دانلود و نصب آن هستید؟" + }, + "restart": { + "message": "راه اندازی مجدد" + }, + "later": { + "message": "بعدا" + }, + "noUpdatesAvailable": { + "message": "در حال حاظر هیچ بروزرسانی در دسترس نمی‌باشد. شما در در حال استفاده از آخرین نسخه هستید." + }, + "updateError": { + "message": "خطا در بروزرسانی" + }, + "unknown": { + "message": "ناشناخته" + }, + "copyUsername": { + "message": "رونوشت نام کاربری" + }, + "copyNumber": { + "message": "رونوشت شماره", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "رونوشت کد امنیتی", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "عضویت پریمیوم" + }, + "premiumManage": { + "message": "مدیریت عضویت" + }, + "premiumManageAlert": { + "message": "شما می‌توانید عضویت خود را در نسخه وب گاوصندوق در bitwarden.com مدیریت کنید. آیا مایل به دیدن وبسایت هستید؟" + }, + "premiumRefresh": { + "message": "نوسازی عضویت" + }, + "premiumNotCurrentMember": { + "message": "شما در حال حاظر کاربر پریمیوم نیستید." + }, + "premiumSignUpAndGet": { + "message": "ثبت نام برای عضویت پرمیوم و گرفتن:" + }, + "premiumSignUpStorage": { + "message": "۱ گیگابایت فضای ذخیره‌سازی رمزنگاری شده برای پرونده‌های پیوست." + }, + "premiumSignUpTwoStep": { + "message": "گزینه‌های ورود دو مرحله‌ای اضافی مانند YubiKey, FIDO U2F و Duo." + }, + "premiumSignUpReports": { + "message": "دانش کلمه عبور، سلامت حساب کاربری و گزارش‌های نقص اطلاعات، برای حفظ امنیت گاوصندوق شما." + }, + "premiumSignUpTotp": { + "message": "تولید کننده کد تایید (2FA) از نوع TOTP برای ورودهای موجود در گاوصندوقتان." + }, + "premiumSignUpSupport": { + "message": "پشتیبانی از مشتری با اولویت." + }, + "premiumSignUpFuture": { + "message": "تمام ویژگی‌های پریمیوم آینده. به زودی بیشتر!" + }, + "premiumPurchase": { + "message": "خرید پریمیوم" + }, + "premiumPurchaseAlert": { + "message": "شما می‌توانید عضویت پریمیوم را از گاوصندوق وب bitwarden.com خریداری کنید. آیا مایلید اکنون از وبسایت بازید کنید؟" + }, + "premiumCurrentMember": { + "message": "شما یک عضو پریمیوم هستید!" + }, + "premiumCurrentMemberThanks": { + "message": "برای حمایتتان از Bitwarden سپاسگزاریم." + }, + "premiumPrice": { + "message": "تمامش فقط $PRICE$ در سال!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "نوسازی کامل شد" + }, + "passwordHistory": { + "message": "تاریخچه کلمه عبور" + }, + "clear": { + "message": "پاک کردن", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "هیچ کلمه عبوری در لیست وجود ندارد." + }, + "undo": { + "message": "بازگرداندن" + }, + "redo": { + "message": "انجام مجدد" + }, + "cut": { + "message": "بریدن", + "description": "Cut to clipboard" + }, + "paste": { + "message": "جای‌گذاری", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "انتخاب همه" + }, + "zoomIn": { + "message": "بزرگ‌نمایی" + }, + "zoomOut": { + "message": "کوچک‌نمایی" + }, + "resetZoom": { + "message": "بازگردانی بزرگ‌نمایی" + }, + "toggleFullScreen": { + "message": "تغییر به حالت تمام صفحه" + }, + "reload": { + "message": "بارگذاری مجدد" + }, + "toggleDevTools": { + "message": "تغییر وضعیت ابزارهای توسعه دهنده" + }, + "minimize": { + "message": "کوچک کردن", + "description": "Minimize window" + }, + "zoom": { + "message": "بزرگ‌نمایی" + }, + "bringAllToFront": { + "message": "آوردن همه به جلو", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "درباره Bitwarden" + }, + "services": { + "message": "خدمات" + }, + "hideBitwarden": { + "message": "پنهان‌سازی Bitwarden" + }, + "hideOthers": { + "message": "پنهان‌سازی بقیه" + }, + "showAll": { + "message": "نمایش همه" + }, + "quitBitwarden": { + "message": "خروج از Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ رونوشت شد", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "راهنما" + }, + "window": { + "message": "پنجره" + }, + "checkPassword": { + "message": "بررسی اینکه که آیا کلمه عبور افشا شده است." + }, + "passwordExposed": { + "message": "این کلمه عبور $VALUE$ بار در رخنه داده‌ها افشا شده است. باید آن را تغییر دهید.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "این کلمه عبور در هیچ رخنه داده‌ای شناخته نشده است. باید برای استفاده امن باشد." + }, + "baseDomain": { + "message": "دامنه پایه", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "نام دامنه", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "میزبان", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "دقیق" + }, + "startsWith": { + "message": "شروع می شود با" + }, + "regEx": { + "message": "عبارت منظم", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "تشخیص تطابق", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "تشخیص تطابق پیشفرض", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "گزینه های تبدیل" + }, + "organization": { + "message": "سازمان", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "پیش فرض" + }, + "exit": { + "message": "خروج" + }, + "showHide": { + "message": "نمایش / پنهان‌سازی", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "پنهان‌سازی در قسمت نمادهای سیستم" + }, + "alwaysOnTop": { + "message": "همشه در بالا", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "بروزرسانی شد", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "کلمه عبور بروزرسانی شد", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "خروجی گرفتن از گاوصندوق" + }, + "fileFormat": { + "message": "فرمت پرونده" + }, + "warning": { + "message": "اخطار", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "صادرات گاوصندوق را تأیید کنید" + }, + "exportWarningDesc": { + "message": "این خروجی شامل داده‌های گاوصندوق در یک قالب رمزنگاری نشده است. شما نباید آن را از طریق یک راه ارتباطی ناامن (مثل ایمیل) ذخیره یا ارسال کنید. به محض اینکه استفاده‌تان از آن تمام شد، آن را حذف کنید." + }, + "encExportKeyWarningDesc": { + "message": "این صادرات با استفاده از کلید رمزگذاری حساب شما ، اطلاعات شما را رمزگذاری می کند. اگر حتی کلید رمزگذاری حساب خود را بچرخانید ، باید دوباره صادر کنید چون قادر به رمزگشایی این پرونده صادراتی نخواهید بود." + }, + "encExportAccountWarningDesc": { + "message": "کلیدهای رمزگذاری حساب برای هر حساب کاربری Bitwarden منحصر به فرد است ، بنابراین نمی توانید صادرات رمزگذاری شده را به حساب دیگری وارد کنید." + }, + "noOrganizationsList": { + "message": "شما به هیچ سازمانی تعلق ندارید. سازمان‌ها به شما اجازه می‌دهند تا داده‌های خود را را با کاربران دیگر به صورت امن به اشتراک بگذارید." + }, + "noCollectionsInList": { + "message": "هیچ مجموعه‌ای برای نمایش وجود ندارد." + }, + "ownership": { + "message": "مالکیت" + }, + "whoOwnsThisItem": { + "message": "چه کسی مالک این مورد است؟" + }, + "strong": { + "message": "قوی", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "خوب", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "ضعیف", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "کلمه عبور اصلی ضعیف" + }, + "weakMasterPasswordDesc": { + "message": "کلمه عبور اصلی که انتخاب کرده‌اید، ضعیف است. شما باید از کلمه عبور (یا عبارت عبور) قوی استفاده کنید تا از حساب کاربری Bitwarden خود به خوبی محافظت کنید. آیا مطمئنید که می‌خواهید این کلمه عبور را استفاده کنید؟" + }, + "pin": { + "message": "پین", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "بازکردن با پین" + }, + "setYourPinCode": { + "message": "کد پین خود را برای باز کردن Bitwarden تنظیم کنید. اگر به طور کامل از برنامه خارج شوید (Log out)، تنظیمات پین شما از بین می‌رود." + }, + "pinRequired": { + "message": "کد پین الزامیست." + }, + "invalidPin": { + "message": "کد پین غیر معتبر است." + }, + "unlockWithWindowsHello": { + "message": "باز کردن با Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "تایید برای Bitwarden." + }, + "unlockWithTouchId": { + "message": "باز کردن با اثر انگشت" + }, + "touchIdConsentMessage": { + "message": "تایید برای Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "در هنگام راه اندازی ، درخواست Windows Hello نکنید." + }, + "noAutoPromptTouchId": { + "message": "در هنگام راه اندازی ، درخواست Touch ID نکنید." + }, + "lockWithMasterPassOnRestart": { + "message": "در زمان شروع مجدد، با کلمه عبور اصلی قفل کن" + }, + "preferences": { + "message": "تنظیمات" + }, + "enableMenuBar": { + "message": "فعال کردن نماد نوار منو" + }, + "enableMenuBarDesc": { + "message": "همیشه یک نماد در نوار منو نشان بده." + }, + "hideToMenuBar": { + "message": "پنهان‌سازی در نوار منو" + }, + "selectOneCollection": { + "message": "شما باید حداقل یک مجموعه را انتخاب کنید." + }, + "premiumUpdated": { + "message": "شما به پرمیوم ارتقاء یافتید." + }, + "restore": { + "message": "بازیابی" + }, + "premiumManageAlertAppStore": { + "message": "می‌توانید اشتراک خود را از اپ استور مدیریت کنید. آیا می‌خواهید هم اکنون از اپ استور دیدن کنید؟" + }, + "legal": { + "message": "قانونی", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "شرایط استفاده از خدمات" + }, + "privacyPolicy": { + "message": "سیاست حفظ حریم خصوصی" + }, + "unsavedChangesConfirmation": { + "message": "آیا مطمئن هستید که می‌خواهید خارج شوید؟ اگر الان خارج شوید اطلاعات فعلی ذخیره نخواهند شد" + }, + "unsavedChangesTitle": { + "message": "تغییرات ذخیره نشده وجود دارند" + }, + "clone": { + "message": "شبیه سازی" + }, + "passwordGeneratorPolicyInEffect": { + "message": "یک یا چند خط مشی سازمان بر تنظیمات تولیدکننده شما تأثیر می گذارد." + }, + "vaultTimeoutAction": { + "message": "عمل متوقف شدن گاو‌صندوق" + }, + "vaultTimeoutActionLockDesc": { + "message": "یک گاوصندوق قفل شده درخواست وارد کردن مجدد کلمه عبور اصلی را برای دسترسی میدهد." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "یک گاوصندوق خارج شده درخواست احراز هویت مجدد را برای دسترسی آن میدهد." + }, + "lock": { + "message": "قفل", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "زباله‌ها", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "جستجوی زباله‌ها" + }, + "permanentlyDeleteItem": { + "message": "حذف دائمی مورد" + }, + "permanentlyDeleteItemConfirmation": { + "message": "آیا مطمئن هستید که می خواهید این مورد را برای همیشه حذف کنید؟" + }, + "permanentlyDeletedItem": { + "message": "مورد برای همیشه حذف شد" + }, + "restoreItem": { + "message": "بازیابی مورد" + }, + "restoreItemConfirmation": { + "message": "آیا مطمئن هستید می خواهید این مورد را بازیابی کنید؟" + }, + "restoredItem": { + "message": "مورد بازیابی شد" + }, + "permanentlyDelete": { + "message": "حذف دائمی" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "خروج از سیستم تمام دسترسی ها به گاو‌صندوق شما را از بین می برد و نیاز به احراز هویت آنلاین پس از مدت زمان توقف دارد. آیا مطمئن هستید که می خواهید از این تنظیمات استفاده کنید؟" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "تایید عمل توقف" + }, + "enterpriseSingleSignOn": { + "message": "ورود به سیستم پروژه" + }, + "setMasterPassword": { + "message": "تنظیم کلمه عبور اصلی" + }, + "ssoCompleteRegistration": { + "message": "برای تکمیل ورود به سیستم با SSO ، لطفاً یک کلمه عبور اصلی برای دسترسی و محافظت از گاوصندوق خود تنظیم کنید." + }, + "newMasterPass": { + "message": "کلمه عبور اصلی جدید" + }, + "confirmNewMasterPass": { + "message": "تایید کلمه عبور اصلی جدید" + }, + "masterPasswordPolicyInEffect": { + "message": "یک یا چند سیاست سازمانی برای تأمین شرایط زیر به گذرواژه اصلی شما احتیاج دارد:" + }, + "policyInEffectMinComplexity": { + "message": "حداقل نمره پیچیدگی $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "حداقل طول $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "حاوی یک یا چند کاراکتر بزرگ" + }, + "policyInEffectLowercase": { + "message": "حاوی یک یا چند کاراکتر کوچک" + }, + "policyInEffectNumbers": { + "message": "حاوی یک یا چند عدد بیشتر" + }, + "policyInEffectSpecial": { + "message": "حاوی یک یا چند کاراکتر خاص زیر است $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "کلمه عبور اصلی جدید شما از شرایط سیاست پپیروی نمی کند." + }, + "acceptPolicies": { + "message": "با علامت زدن این کادر با موارد زیر موافقت می کنید:" + }, + "acceptPoliciesError": { + "message": "شرایط خدمات و سیاست حفظ حریم خصوصی تأیید نشده است." + }, + "enableBrowserIntegration": { + "message": "فعال کردن ادغام مرورگر" + }, + "enableBrowserIntegrationDesc": { + "message": "یکپارچه سازی مرورگر برای بیومتریک در مرورگر استفاده می شود." + }, + "browserIntegrationMasOnlyTitle": { + "message": "ادغام مرورگر پشتیبانی نمی شود" + }, + "browserIntegrationMasOnlyDesc": { + "message": "متأسفانه در حال حاضر ادغام مرورگر فقط در نسخه Mac App Store پشتیبانی می شود." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "ادغام مرورگر پشتیبانی نمی شود" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "متأسفانه در حال حاضر ادغام مرورگر در نسخه فروشگاه ویندوز پشتیبانی نمی شود." + }, + "enableBrowserIntegrationFingerprint": { + "message": "برای ادغام مرورگر نیاز به تأیید است" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "هنگام ایجاد پیوند بین دسکتاپ و مرورگر خود، با تأیید اعتبار اثر انگشت، یک لایه امنیتی دیگر را فعال کنید. درصورت فعال بودن، این امر مستلزم مداخله و تأیید کاربر در هر بار برقراری ارتباط است." + }, + "approve": { + "message": "تایید" + }, + "verifyBrowserTitle": { + "message": "اتصال مرورگر را تأیید کنید" + }, + "verifyBrowserDesc": { + "message": "لطفاً اطمینان حاصل کنید که اثر انگشت نشان داده شده با اثر انگشت نشان داده شده در افزونه مرورگر یکسان است." + }, + "biometricsNotEnabledTitle": { + "message": "بیومتریک فعال نیست" + }, + "biometricsNotEnabledDesc": { + "message": "بیومتریک مرورگر ابتدا نیاز به فعالسازی بیومتریک دسکتاپ در تنظیمات دارد." + }, + "personalOwnershipSubmitError": { + "message": "به دلیل خط مشی Enterprise ، برای ذخیره موارد در گاوصندوق شخصی خود محدود شده اید. گزینه مالکیت را به یک سازمان تغییر دهید و مجموعه های موجود را انتخاب کنید." + }, + "hintEqualsPassword": { + "message": "نکته کلمه عبور شما نمی تواند همان کلمه عبور شما باشد." + }, + "personalOwnershipPolicyInEffect": { + "message": "خط مشی سازمانی بر تنظیمات مالکیت شما تأثیر می گذارد." + }, + "allSends": { + "message": "همه ارسال ها", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "فایل" + }, + "sendTypeText": { + "message": "متن" + }, + "searchSends": { + "message": "ارسال ها را جستجو کن", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "ویرایش ارسال", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "گاوصندوق من" + }, + "text": { + "message": "متن" + }, + "deletionDate": { + "message": "تاریخ حذف" + }, + "deletionDateDesc": { + "message": "ارسال در تاریخ و ساعت مشخص شده برای همیشه حذف خواهد شد.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "تاريخ انقضاء" + }, + "expirationDateDesc": { + "message": "در صورت تنظیم، دسترسی به این ارسال در تاریخ و ساعت مشخص شده منقضی می شود.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "تعداد دسترسی حداکثر" + }, + "maxAccessCountDesc": { + "message": "در صورت تنظیم، با رسیدن به حداکثر تعداد دسترسی، کاربران دیگر نمی توانند به این ارسال دسترسی پیدا کنند.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "تعداد دسترسی فعلی" + }, + "disableSend": { + "message": "این ارسال را غیرفعال کنید تا کسی نتواند به آن دسترسی پیدا کند.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "به صورت اختیاری برای دسترسی کاربران به این ارسال به یک کلمه عبور نیاز دارید.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "یادداشت های خصوصی در مورد این ارسال.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "ارسال پیوند", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "ارسال پیوند", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "هنگام دسترسی به ارسال، متن را به طور پیش فرض پنهان کن", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "ارسال جدید ساخته شد", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "ارسال جدید ویرایش شد", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "ارسال پاک شد", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "کلمه عبور جدید" + }, + "whatTypeOfSend": { + "message": "این چه نوع ارسالی است؟", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "ساختن ارسال", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "متنی که می خواهید ارسال کنید." + }, + "sendFileDesc": { + "message": "فایلی که می خواهید ارسال کنید." + }, + "days": { + "message": "$DAYS$ روز", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "۱ روز" + }, + "custom": { + "message": "سفارشی" + }, + "deleteSendConfirmation": { + "message": "آیا مطمئن هستید می خواهید این ارسال را حذف کنید؟", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "کپی لینک ارسال به حافظه موقت", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "این پیوند را برای به اشتراک گذاری ارسال بعد از ارسال کپی کن." + }, + "sendDisabled": { + "message": "ارسال غیرفعال شد", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "به دلیل خط مشی سازمانی، شما فقط می توانید ارسال موجود را حذف کنید.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "کپی پیوند" + }, + "disabled": { + "message": "غیرفعال شد" + }, + "maxAccessCountReached": { + "message": "به حداکثر تعداد دسترسی رسیده است" + }, + "expired": { + "message": "منقضی شده" + }, + "pendingDeletion": { + "message": "در انتظار حذف" + }, + "webAuthnAuthenticate": { + "message": "تأیید اعتبار در WebAuthn" + }, + "hideEmail": { + "message": "آدرس ایمیلم را از گیرندگان مخفی کن." + }, + "sendOptionsPolicyInEffect": { + "message": "یک یا چند سیاست سازمان بر گزینه های ارسال شما تأثیر می گذارد." + }, + "emailVerificationRequired": { + "message": "تایید ایمیل لازم است" + }, + "emailVerificationRequiredDesc": { + "message": "برای استفاده از این ویژگی باید ایمیل خود را تأیید کنید." + }, + "passwordPrompt": { + "message": "کلمه عبور اصلی دوباره تولید می شود" + }, + "passwordConfirmation": { + "message": "تأیید کلمه عبور اصلی" + }, + "passwordConfirmationDesc": { + "message": "این عمل محافظت می شود. برای ادامه، لطفاً کلمه ورود اصلی خود را دوباره وارد کنید تا هویتان را تأیید کنید." + }, + "updatedMasterPassword": { + "message": "کلمه عبور اصلی بروز شد" + }, + "updateMasterPassword": { + "message": "بروزرسانی کلمه عبور اصلی" + }, + "updateMasterPasswordWarning": { + "message": "کلمه عبور اصلی شما اخیراً توسط سرپرست سازمانتان تغییر کرده است. برای دسترسی به گاوصندوق، باید همین حالا کلمه عبور اصلی خود را به روز کنید. در صورت ادامه، شما از نشست فعلی خود خارج می شوید و باید دوباره وارد سیستم شوید. نشست فعال در دستگاه های دیگر ممکن است تا یک ساعت همچنان فعال باقی بمانند." + }, + "hours": { + "message": "ساعت" + }, + "minutes": { + "message": "دقیقه" + }, + "vaultTimeoutPolicyInEffect": { + "message": "خط مشی های سازمانتان بر مهلت زمانی گاوصندوق شما تأثیر می گذارد. حداکثر زمان مجاز گاوصندوق $HOURS$ ساعت و $MINUTES$ دقیقه است", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "مهلت زمانی شما بیش از محدودیت های تعیین شده توسط سازمانتان است." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "ثبت نام خودکار" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "این سازمان دارای خط مشی سازمانی ای است که به طور خودکار شما را در بازنشانی کلمه عبور ثبت نام می کند. این ثبت نام به مدیران سازمان اجازه می دهد تا کلمه عبور اصلی شما را تغییر دهند." + }, + "vaultExportDisabled": { + "message": "صادرات گاوصندوق غیرفعال شده است" + }, + "personalVaultExportPolicyInEffect": { + "message": "یک یا چند خط مشی سازمان از صادرات گاوصندوق شخصی شما جلوگیری می کند." + }, + "addAccount": { + "message": "افزودن حساب کاربری" + }, + "removeMasterPassword": { + "message": "پاک کردن کلمه عبور اصلی" + }, + "removedMasterPassword": { + "message": "کلمه عبور اصلی پاک شد." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ در حال استفاده از SSO با یک سرور کلید خود میزبان است. برای ورود اعضای این سازمان دیگر نیازی به کلمه عبور اصلی نیست.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "ترک سازمان" + }, + "leaveOrganizationConfirmation": { + "message": "آيا مطمئن هستيد که می خواهيد سازمان های انتخاب شده را ترک کنيد؟" + }, + "leftOrganization": { + "message": "شما از سازمان ها خارج شده اید." + }, + "ssoKeyConnectorUnavailable": { + "message": "دسترسی به رابط کلید ممکن نیست، بعداً دوباره امتحان کنید." + }, + "lockAllVaults": { + "message": "قفل کردن تمام گاوصندوق ها" + }, + "accountLimitReached": { + "message": "بیش از 5 حساب را نمی توان همزمان وارد کرد." + }, + "accountPreferences": { + "message": "تنظیمات" + }, + "appPreferences": { + "message": "تنظیمات اپ (تمام حسابها)" + }, + "accountSwitcherLimitReached": { + "message": "محدودیت حساب تکمیل شد. برای افزودن حساب دیگر، از یک حساب خارج شوید." + }, + "settingsTitle": { + "message": "تنظیمات اپ برای $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "تعویض حساب کاربری" + }, + "options": { + "message": "گزینه‌ها" + }, + "sessionTimeout": { + "message": "زمان نشست شما به پایان رسید. لطفاً برگردید و دوباره وارد سیستم شوید." + }, + "exportingPersonalVaultTitle": { + "message": "صادرات گاو‌صندوق شخصی" + }, + "exportingPersonalVaultDescription": { + "message": "فقط موارد گاو‌صندوق شخصی مرتبط با $EMAIL$ صادر خواهد شد. موارد گاو‌صندوق سازمان شامل نخواهد شد.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "تولید کننده" + }, + "whatWouldYouLikeToGenerate": { + "message": "چه چیزی دوست دارید تولید کنید؟" + }, + "passwordType": { + "message": "نوع گذرواژه" + }, + "regenerateUsername": { + "message": "ایجاد مجدد نام کاربری" + }, + "generateUsername": { + "message": "ایجاد نام کاربری" + }, + "usernameType": { + "message": "نوع نام کاربری" + }, + "plusAddressedEmail": { + "message": "به علاوه ایمیل آدرس داده شده" + }, + "plusAddressedEmailDesc": { + "message": "از قابلیت های آدرس دهی فرعی ارائه دهنده ایمیل خود استفاده کنید." + }, + "catchallEmail": { + "message": "رایانامه همه‌گیر" + }, + "catchallEmailDesc": { + "message": "از صندوق ورودی پیکربندی شده دامنه خود استفاده کنید." + }, + "random": { + "message": "تصادفی" + }, + "randomWord": { + "message": "کلمه تصادفی" + }, + "websiteName": { + "message": "نام وب سایت" + }, + "service": { + "message": "خدمت" + } +} diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json new file mode 100644 index 0000000000..48d7a015b4 --- /dev/null +++ b/apps/desktop/src/locales/fi/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Suodattimet" + }, + "allItems": { + "message": "Kaikki kohteet" + }, + "favorites": { + "message": "Suosikit" + }, + "types": { + "message": "Tyypit" + }, + "typeLogin": { + "message": "Kirjautumistieto" + }, + "typeCard": { + "message": "Kortti" + }, + "typeIdentity": { + "message": "Henkilöllisyys" + }, + "typeSecureNote": { + "message": "Salattu muistio" + }, + "folders": { + "message": "Kansiot" + }, + "collections": { + "message": "Kokoelmat" + }, + "searchVault": { + "message": "Hae holvista" + }, + "addItem": { + "message": "Lisää kohde" + }, + "shared": { + "message": "Jaettu" + }, + "share": { + "message": "Jaa" + }, + "moveToOrganization": { + "message": "Siirrä organisaatiolle" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ siirrettiin organisaatioon $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Valitse organisaatio, jolle haluat siirtää kohteen. Tämä siirtää kohteen organisaation omistukseen, etkä tämän jälkeen ole enää sen suora omistaja." + }, + "attachments": { + "message": "Liitteet" + }, + "viewItem": { + "message": "Näytä kohde" + }, + "name": { + "message": "Nimi" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Uusi URI" + }, + "username": { + "message": "Käyttäjätunnus" + }, + "password": { + "message": "Salasana" + }, + "passphrase": { + "message": "Salauslauseke" + }, + "editItem": { + "message": "Muokkaa kohdetta" + }, + "emailAddress": { + "message": "Sähköpostiosoite" + }, + "verificationCodeTotp": { + "message": "Todennuskoodi (TOTP)" + }, + "website": { + "message": "Verkkosivusto" + }, + "notes": { + "message": "Merkinnät" + }, + "customFields": { + "message": "Lisäkentät" + }, + "launch": { + "message": "Avaa" + }, + "copyValue": { + "message": "Kopioi arvo", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Pienennä kopioitaessa leikepöydälle" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Pienennä kun kohteen tietoja kopioidaan leikepöydälle." + }, + "toggleVisibility": { + "message": "Näytä tai piilota" + }, + "toggleCollapse": { + "message": "Laajenna tai pienennä", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kortinhaltijan nimi" + }, + "number": { + "message": "Numero" + }, + "brand": { + "message": "Merkki" + }, + "expiration": { + "message": "Erääntymisaika" + }, + "securityCode": { + "message": "Turvakoodi (CVC/CVV)" + }, + "identityName": { + "message": "Henkilöllisyyden nimi" + }, + "company": { + "message": "Yritys" + }, + "ssn": { + "message": "Henkilötunnus" + }, + "passportNumber": { + "message": "Passin numero" + }, + "licenseNumber": { + "message": "Ajokortin numero" + }, + "email": { + "message": "Sähköposti" + }, + "phone": { + "message": "Puhelinnumero" + }, + "address": { + "message": "Osoite" + }, + "premiumRequired": { + "message": "Premium vaaditaan" + }, + "premiumRequiredDesc": { + "message": "Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden." + }, + "errorOccurred": { + "message": "Tapahtui virhe." + }, + "error": { + "message": "Virhe" + }, + "january": { + "message": "Tammikuu" + }, + "february": { + "message": "Helmikuu" + }, + "march": { + "message": "Maaliskuu" + }, + "april": { + "message": "Huhtikuu" + }, + "may": { + "message": "Toukokuu" + }, + "june": { + "message": "Kesäkuu" + }, + "july": { + "message": "Heinäkuu" + }, + "august": { + "message": "Elokuu" + }, + "september": { + "message": "Syyskuu" + }, + "october": { + "message": "Lokakuu" + }, + "november": { + "message": "Marraskuu" + }, + "december": { + "message": "Joulukuu" + }, + "ex": { + "message": "esim.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titteli" + }, + "mr": { + "message": "Hra" + }, + "mrs": { + "message": "Rva" + }, + "ms": { + "message": "Nti" + }, + "dr": { + "message": "Tri" + }, + "expirationMonth": { + "message": "Erääntymiskuukausi" + }, + "expirationYear": { + "message": "Erääntymisvuosi" + }, + "select": { + "message": "Valitse" + }, + "other": { + "message": "Muut" + }, + "generatePassword": { + "message": "Luo salasana" + }, + "type": { + "message": "Tyyppi" + }, + "firstName": { + "message": "Etunimi" + }, + "middleName": { + "message": "Toinen nimi" + }, + "lastName": { + "message": "Sukunimi" + }, + "fullName": { + "message": "Koko nimi" + }, + "address1": { + "message": "Osoite 1" + }, + "address2": { + "message": "Osoite 2" + }, + "address3": { + "message": "Osoite 3" + }, + "cityTown": { + "message": "Paikkakunta" + }, + "stateProvince": { + "message": "Osavaltio/maakunta" + }, + "zipPostalCode": { + "message": "Postinumero" + }, + "country": { + "message": "Maa" + }, + "save": { + "message": "Tallenna" + }, + "cancel": { + "message": "Peruuta" + }, + "delete": { + "message": "Poista" + }, + "favorite": { + "message": "Suosikki" + }, + "edit": { + "message": "Muokkaa" + }, + "authenticatorKeyTotp": { + "message": "Todennusmenetelmän avain (TOTP)" + }, + "folder": { + "message": "Kansio" + }, + "newCustomField": { + "message": "Uusi lisäkenttä" + }, + "value": { + "message": "Arvo" + }, + "dragToSort": { + "message": "Järjestä raahaamalla" + }, + "cfTypeText": { + "message": "Teksti" + }, + "cfTypeHidden": { + "message": "Piilotettu" + }, + "cfTypeBoolean": { + "message": "Totuusarvo" + }, + "cfTypeLinked": { + "message": "Linkitetty", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linkitetty arvo", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Poista" + }, + "nameRequired": { + "message": "Nimi vaaditaan." + }, + "addedItem": { + "message": "Kohde lisätty" + }, + "editedItem": { + "message": "Kohdetta muokattu" + }, + "deleteItem": { + "message": "Poista kohde" + }, + "deleteFolder": { + "message": "Poista kansio" + }, + "deleteAttachment": { + "message": "Poista tiedostoliite" + }, + "deleteItemConfirmation": { + "message": "Haluatko varmasti siirtää roskakoriin?" + }, + "deletedItem": { + "message": "Kohde siirretty roskakoriin" + }, + "overwritePasswordConfirmation": { + "message": "Haluatko varmasti korvata nykyisen salasanan?" + }, + "overwriteUsername": { + "message": "Korvaa käyttäjätunnus" + }, + "overwriteUsernameConfirmation": { + "message": "Haluatko varmasti korvata nykyisen käyttäjätunnuksen?" + }, + "noneFolder": { + "message": "Ei kansiota", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Lisää kansio" + }, + "editFolder": { + "message": "Muokkaa kansiota" + }, + "regeneratePassword": { + "message": "Luo uusi salasana" + }, + "copyPassword": { + "message": "Kopioi salasana" + }, + "copyUri": { + "message": "Kopioi URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopioi todennuskoodi (TOTP)" + }, + "length": { + "message": "Pituus" + }, + "numWords": { + "message": "Sanojen määrä" + }, + "wordSeparator": { + "message": "Sanojen erotin" + }, + "capitalize": { + "message": "Sanat isoilla alkukirjaimilla", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Sisällytä numero" + }, + "close": { + "message": "Sulje" + }, + "minNumbers": { + "message": "Numeroita vähintään" + }, + "minSpecial": { + "message": "Erikoismerkkejä vähintään", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Vältä epäselviä merkkejä" + }, + "searchCollection": { + "message": "Hae kokoelmasta" + }, + "searchFolder": { + "message": "Hae kansiosta" + }, + "searchFavorites": { + "message": "Hae suosikeista" + }, + "searchType": { + "message": "Hae tyypeistä", + "description": "Search item type" + }, + "newAttachment": { + "message": "Lisää uusi tiedostoliite" + }, + "deletedAttachment": { + "message": "Tiedostoliite poistettu" + }, + "deleteAttachmentConfirmation": { + "message": "Haluatko varmasti poistaa liitteen?" + }, + "attachmentSaved": { + "message": "Tiedostoliite tallennettu." + }, + "file": { + "message": "Tiedosto" + }, + "selectFile": { + "message": "Valitse tiedosto." + }, + "maxFileSize": { + "message": "Tiedoston enimmäiskoko on 500 Mt." + }, + "updateKey": { + "message": "Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi." + }, + "editedFolder": { + "message": "Kansiota muokattu" + }, + "addedFolder": { + "message": "Kansio lisätty" + }, + "deleteFolderConfirmation": { + "message": "Haluatko varmasti poistaa kansion?" + }, + "deletedFolder": { + "message": "Kansio poistettu" + }, + "loginOrCreateNewAccount": { + "message": "Kirjaudu sisään tai luo uusi tili päästäksesi salattuun holviisi." + }, + "createAccount": { + "message": "Luo tili" + }, + "logIn": { + "message": "Kirjaudu" + }, + "submit": { + "message": "Jatka" + }, + "masterPass": { + "message": "Pääsalasana" + }, + "masterPassDesc": { + "message": "Pääsalasanalla pääset käsiksi holviisi. On erittäin tärkeää, että muistat pääsalasanasi, koska sen palautus ei ole mahdollista, jos unohdat sen." + }, + "masterPassHintDesc": { + "message": "Pääsalasanan vihje voi auttaa sinua muistamaan unohtamasi salasanan." + }, + "reTypeMasterPass": { + "message": "Syötä pääsalasana uudelleen" + }, + "masterPassHint": { + "message": "Pääsalasanan vihje (valinnainen)" + }, + "settings": { + "message": "Asetukset" + }, + "passwordHint": { + "message": "Salasanavihje" + }, + "enterEmailToGetHint": { + "message": "Syötä tilisi sähköpostiosoite saadaksesi pääsalasanan vihjeen." + }, + "getMasterPasswordHint": { + "message": "Pyydä pääsalasanan vihjettä" + }, + "emailRequired": { + "message": "Sähköpostiosoite vaaditaan." + }, + "invalidEmail": { + "message": "Virheellinen sähköpostiosoite." + }, + "masterPassRequired": { + "message": "Pääsalasana vaaditaan." + }, + "masterPassLength": { + "message": "Pääsalasanan on oltava vähintään 8 merkkiä pitkä." + }, + "masterPassDoesntMatch": { + "message": "Pääsalasanan vahvistus ei täsmää." + }, + "newAccountCreated": { + "message": "Uusi käyttäjätilisi on luotu! Voit nyt kirjautua sisään." + }, + "masterPassSent": { + "message": "Lähetimme pääsalasanasi vihjeen sinulle sähköpostitse." + }, + "unexpectedError": { + "message": "Tapahtui odottamaton virhe." + }, + "itemInformation": { + "message": "Kohteen tiedot" + }, + "noItemsInList": { + "message": "Ei näytettäviä kohteita." + }, + "sendVerificationCode": { + "message": "Lähetä vahvistuskoodi sähköpostiisi" + }, + "sendCode": { + "message": "Lähetä koodi" + }, + "codeSent": { + "message": "Koodi lähetetty" + }, + "verificationCode": { + "message": "Todennuskoodi" + }, + "confirmIdentity": { + "message": "Vahvista henkilöllisyytesi jatkaaksesi." + }, + "verificationCodeRequired": { + "message": "Todennuskoodi vaaditaan." + }, + "invalidVerificationCode": { + "message": "Virheellinen vahvistuskoodi" + }, + "continue": { + "message": "Jatka" + }, + "enterVerificationCodeApp": { + "message": "Syötä 6-numeroinen todennuskoodi todennussovelluksestasi." + }, + "enterVerificationCodeEmail": { + "message": "Syötä 6-numeroinen todennuskoodi, joka lähetettiin sähköpostitse osoitteeseen $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Todennussähköposti lähetettiin osoitteeseen $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Muista minut" + }, + "sendVerificationCodeEmailAgain": { + "message": "Lähetä todennuskoodi sähköpostitse uudelleen" + }, + "useAnotherTwoStepMethod": { + "message": "Käytä eri kaksivaiheisen kirjautumisen todennusmenetelmää" + }, + "insertYubiKey": { + "message": "Kytke YubiKey-todennuslaitteesi tietokoneen USB-porttiin ja paina sen painiketta." + }, + "insertU2f": { + "message": "Kytke todennuslaitteesi tietokoneen USB-porttiin ja jos laitteessa on painike, paina sitä." + }, + "recoveryCodeDesc": { + "message": "Etkö pysty käyttämään kaksivaiheisen kirjautumisen todentajiasi? Poista kaikki tilisi todentajat käytöstä palautuskoodillasi." + }, + "recoveryCodeTitle": { + "message": "Palautuskoodi" + }, + "authenticatorAppTitle": { + "message": "Todennussovellus" + }, + "authenticatorAppDesc": { + "message": "Käytä todennussovellusta (kuten Authy tai Google Authenticator) luodaksesi aikarajallisia todennuskoodeja.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP -todennuslaite" + }, + "yubiKeyDesc": { + "message": "Käytä YubiKey-todennuslaitetta tilisi avaukseen. Toimii YubiKey 4, 4 Nano, 4C sekä NEO -laitteiden kanssa." + }, + "duoDesc": { + "message": "Vahvista Duo Securityn avulla käyttäen Duo Mobile ‑sovellusta, tekstiviestiä, puhelua tai U2F-todennuslaitetta.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Vahvista organisaatiollesi Duo Securityn avulla käyttäen Duo Mobile ‑sovellusta, tekstiviestiä, puhelua tai U2F-todennuslaitetta.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Käytä mitä tahansa WebAuthn‑yhteensopivaa todennuslaitetta päästäksesi käsiksi tiliisi." + }, + "emailTitle": { + "message": "Sähköposti" + }, + "emailDesc": { + "message": "Todennuskoodit lähetetään sinulle sähköpostitse." + }, + "loginUnavailable": { + "message": "Kirjautuminen ei ole käytettävissä" + }, + "noTwoStepProviders": { + "message": "Tilillä on käytössä kaksivaiheinen kirjautuminen, mutta tämä laite ei tue käytettävissä olevia todentajia." + }, + "noTwoStepProviders2": { + "message": "Lisää muita todentajia, joita tuetaan laajemmin eri laitteilla (kuten todennussovellus)." + }, + "twoStepOptions": { + "message": "Kaksivaiheisen kirjautumisen asetukset" + }, + "selfHostedEnvironment": { + "message": "Oma palvelinympäristö" + }, + "selfHostedEnvironmentFooter": { + "message": "Määritä omassa palvelinympäristössäsi suoritettavan Bitwarden-asennuksen pääverkkotunnus." + }, + "customEnvironment": { + "message": "Mukautettu palvelinympäristö" + }, + "customEnvironmentFooter": { + "message": "Edistyneille käyttäjille. Voit määrittää jokaiselle palvelulle oman pääverkkotunnuksen." + }, + "baseUrl": { + "message": "Palvelimen URL" + }, + "apiUrl": { + "message": "API-palvelimen URL" + }, + "webVaultUrl": { + "message": "Verkkoholvipalvelimen URL" + }, + "identityUrl": { + "message": "Henkilöllisyyspalvelimen URL" + }, + "notificationsUrl": { + "message": "Ilmoituspalvelimen URL" + }, + "iconsUrl": { + "message": "Kuvakepalvelimen URL" + }, + "environmentSaved": { + "message": "Palvelinten URL-osoitteet tallennettiin." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Kyllä" + }, + "no": { + "message": "En" + }, + "overwritePassword": { + "message": "Korvaa salasana" + }, + "learnMore": { + "message": "Lue lisää" + }, + "featureUnavailable": { + "message": "Toiminto ei ole käytettävissä" + }, + "loggedOut": { + "message": "Kirjauduttu ulos" + }, + "loginExpired": { + "message": "Kirjautumisistuntosi on erääntynyt." + }, + "logOutConfirmation": { + "message": "Haluatko varmasti kirjautua ulos?" + }, + "logOut": { + "message": "Kirjaudu ulos" + }, + "addNewLogin": { + "message": "Lisää uusi kirjautumistieto" + }, + "addNewItem": { + "message": "Lisää uusi kohde" + }, + "addNewFolder": { + "message": "Lisää uusi kansio" + }, + "view": { + "message": "Näytä" + }, + "account": { + "message": "Käyttäjätili" + }, + "loading": { + "message": "Ladataan…" + }, + "lockVault": { + "message": "Lukitse holvi" + }, + "passwordGenerator": { + "message": "Salasanageneraattori" + }, + "contactUs": { + "message": "Ota yhteyttä" + }, + "getHelp": { + "message": "Hanki apua" + }, + "fileBugReport": { + "message": "Jätä virheilmoitus" + }, + "blog": { + "message": "Blogi" + }, + "followUs": { + "message": "Seuraa meitä" + }, + "syncVault": { + "message": "Synkronoi holvi" + }, + "changeMasterPass": { + "message": "Vaihda pääsalasana" + }, + "changeMasterPasswordConfirmation": { + "message": "Voit vaihtaa pääsalasanasi bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" + }, + "fingerprintPhrase": { + "message": "Tunnistelauseke", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Tilisi tunnistelauseke", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Siirry verkkoholviin" + }, + "getMobileApp": { + "message": "Hanki mobiilisovellus" + }, + "getBrowserExtension": { + "message": "Hanki selainlaajennus" + }, + "syncingComplete": { + "message": "Synkronointi on valmis" + }, + "syncingFailed": { + "message": "Synkronointi epäonnistui" + }, + "yourVaultIsLocked": { + "message": "Holvisi on lukittu. Vahvista henkilöllisyytesi jatkaaksesi." + }, + "unlock": { + "message": "Avaa" + }, + "loggedInAsOn": { + "message": "Kirjautuneena tunnuksella $EMAIL$ palveluun $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Virheellinen pääsalasana" + }, + "twoStepLoginConfirmation": { + "message": "Kaksivaiheinen kirjautuminen tekee tilistäsi turvallisemman edellyttämällä salasanan lisäksi kirjautumisen lisätodennusta todennuslaitteen, ‑sovelluksen, tekstiviestin, puhelun tai sähköpostin avulla. Voit ottaa kaksivaiheisen kirjautumisen käyttöön bitwarden.com‑verkkoholvissa. Haluatko käydä sivustolla nyt?" + }, + "twoStepLogin": { + "message": "Kaksivaiheinen kirjautuminen" + }, + "vaultTimeout": { + "message": "Holvin aikakatkaisu" + }, + "vaultTimeoutDesc": { + "message": "Valitse milloin holvin aikakatkaisu tapahtuu ja suorita valittu toiminto." + }, + "immediately": { + "message": "Välittömästi" + }, + "tenSeconds": { + "message": "10 sekuntia" + }, + "twentySeconds": { + "message": "20 sekuntia" + }, + "thirtySeconds": { + "message": "30 sekuntia" + }, + "oneMinute": { + "message": "1 minuutti" + }, + "twoMinutes": { + "message": "2 minuuttia" + }, + "fiveMinutes": { + "message": "5 minuuttia" + }, + "fifteenMinutes": { + "message": "15 minuuttia" + }, + "thirtyMinutes": { + "message": "30 minuuttia" + }, + "oneHour": { + "message": "1 tunti" + }, + "fourHours": { + "message": "4 tuntia" + }, + "onIdle": { + "message": "Kun järjetelmä on käyttämättömänä" + }, + "onSleep": { + "message": "Kun järjestelmän siirtyy lepotilaan" + }, + "onLocked": { + "message": "Kun järjestelmän lukitaan" + }, + "onRestart": { + "message": "Kun käynnistetään uudelleen" + }, + "never": { + "message": "Ei koskaan" + }, + "security": { + "message": "Suojaus" + }, + "clearClipboard": { + "message": "Tyhjennä leikepöytä", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Poista kopioidut arvot leikepöydältä automaattisesti.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Älä näytä sivustojen kuvakkeita" + }, + "disableFaviconDesc": { + "message": "Kirjautumistietojen vieressä näytettävät sivustojen kuvakkeet helpottavat kohteiden tunnistusta." + }, + "enableMinToTray": { + "message": "Pienennä ilmoitusalueelle" + }, + "enableMinToTrayDesc": { + "message": "Pienennä ikkuna kuvakkeeksi järjestelmän ilmoitusalueelle." + }, + "enableMinToMenuBar": { + "message": "Pienennä valikkoriville" + }, + "enableMinToMenuBarDesc": { + "message": "Kun ikkuna pienennetään, näytä se kuvakkeena valikkorivillä." + }, + "enableCloseToTray": { + "message": "Sulje ilmoitusalueelle" + }, + "enableCloseToTrayDesc": { + "message": "Sulje ikkuna kuvakkeeksi järjestelmän ilmoitusalueelle." + }, + "enableCloseToMenuBar": { + "message": "Sulje valikkoriville" + }, + "enableCloseToMenuBarDesc": { + "message": "Kun ikkuna suljetaan, näytä se sulun sijaan kuvakkeena valikkorivillä." + }, + "enableTray": { + "message": "Näytä ilmoitusalueen kuvake" + }, + "enableTrayDesc": { + "message": "Näytä ilmoitusalueen kuvake aina." + }, + "startToTray": { + "message": "Käynnistä ilmoitusalueelle" + }, + "startToTrayDesc": { + "message": "Kun sovellus käynnistetään, näytä vain kuvake ilmoitusalueella." + }, + "startToMenuBar": { + "message": "Avaa valikkoriville" + }, + "startToMenuBarDesc": { + "message": "Kun sovellus avataan ensimmäisen kerran, näytä se kuvakkeena valikkorivillä." + }, + "openAtLogin": { + "message": "Käynnistä automaattisesti kirjauduttaessa" + }, + "openAtLoginDesc": { + "message": "Käynnistä Bitwardenin työpöytäsovellus automaattisesti kirjautumisen yhteydessä." + }, + "alwaysShowDock": { + "message": "Näytä aina Dockissa" + }, + "alwaysShowDockDesc": { + "message": "Näytä Bitwardenin kuvake Dockissa myös sen ollessa pienennettynä valikkoriville." + }, + "confirmTrayTitle": { + "message": "Vahvista ilmoitusalueen käytöstä poisto" + }, + "confirmTrayDesc": { + "message": "Asetuksen käytöstä poisto kytkee myös kaikki muut ilmoitusalueeseen liittyvät asetukset pois käytöstä." + }, + "language": { + "message": "Kieli" + }, + "languageDesc": { + "message": "Vaihda sovelluksen kieli. Vaatii uudelleenkäynnistyksen." + }, + "theme": { + "message": "Teema" + }, + "themeDesc": { + "message": "Muuta sovelluksen väriteemaa." + }, + "dark": { + "message": "Tumma", + "description": "Dark color" + }, + "light": { + "message": "Vaalea", + "description": "Light color" + }, + "copy": { + "message": "Kopioi", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Tarkista päivitykset" + }, + "version": { + "message": "Versio $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Käynnistä Bitwarden uudelleen päivittääksesi" + }, + "restartToUpdateDesc": { + "message": "Versio $VERSION_NUM$ on valmis asennettavaksi. Sovellus tulee käynnistää uudelleen, jotta asennus voidaan suorittaa loppuun. Haluatko käynnistää sovelluksen uudelleen ja päivittää nyt?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Päivitys on saatavilla" + }, + "updateAvailableDesc": { + "message": "Päivitys löydetty. Haluatko ladata sen nyt?" + }, + "restart": { + "message": "Käynnistä sovellus uudelleen" + }, + "later": { + "message": "Myöhemmin" + }, + "noUpdatesAvailable": { + "message": "Päivityksiä ei ole saatavilla. Käytät viimeisintä versiota." + }, + "updateError": { + "message": "Päivitysvirhe" + }, + "unknown": { + "message": "Tuntematon" + }, + "copyUsername": { + "message": "Kopioi käyttäjätunnus" + }, + "copyNumber": { + "message": "Kopioi numero", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopioi turvakoodi", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium-jäsenyys" + }, + "premiumManage": { + "message": "Hallitse jäsenyyttä" + }, + "premiumManageAlert": { + "message": "Voit hallita jäsenyyttäsi bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" + }, + "premiumRefresh": { + "message": "Päivitä jäsenyys" + }, + "premiumNotCurrentMember": { + "message": "Et ole tällä hetkellä Premium-jäsen." + }, + "premiumSignUpAndGet": { + "message": "Ryhdy Premium-jäseneksi saadaksesi:" + }, + "premiumSignUpStorage": { + "message": "1 Gt salattua tallennustilaa tiedostoliitteille." + }, + "premiumSignUpTwoStep": { + "message": "Muita kaksivaiheisen kirjautumisen todennusmenetelmiä kuten YubiKey, FIDO U2F ja Duo Security." + }, + "premiumSignUpReports": { + "message": "Salasanahygienian, tilin terveyden ja tietovuotojen raportointitoiminnot pitävät holvisi turvassa." + }, + "premiumSignUpTotp": { + "message": "Kaksivaiheisen kirjautumisen (2FA) TOTP-todennuskoodien generaattori holvisi kirjautumistiedoille." + }, + "premiumSignUpSupport": { + "message": "Ensisijainen asiakastuki." + }, + "premiumSignUpFuture": { + "message": "Kaikki tulossa olevat Premium-toiminnot. Lisää tulossa pian!" + }, + "premiumPurchase": { + "message": "Osta Premium" + }, + "premiumPurchaseAlert": { + "message": "Voit ostaa Premium-jäsenyyden bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" + }, + "premiumCurrentMember": { + "message": "Olet Premium-jäsen!" + }, + "premiumCurrentMemberThanks": { + "message": "Kiitos kun tuet Bitwardenia." + }, + "premiumPrice": { + "message": "Kaikki tämä vain $PRICE$/vuosi!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Päivitys on valmis" + }, + "passwordHistory": { + "message": "Salasanahistoria" + }, + "clear": { + "message": "Tyhjennä", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Ei näytettäviä salasanoja." + }, + "undo": { + "message": "Kumoa" + }, + "redo": { + "message": "Tee uudelleen" + }, + "cut": { + "message": "Leikkaa", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Liitä", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Valitse kaikki" + }, + "zoomIn": { + "message": "Lähennä" + }, + "zoomOut": { + "message": "Loitonna" + }, + "resetZoom": { + "message": "Palauta zoomaus" + }, + "toggleFullScreen": { + "message": "Kytke koko näytön tila" + }, + "reload": { + "message": "Lataa uudelleen" + }, + "toggleDevTools": { + "message": "Kytke kehittäjätyökalut" + }, + "minimize": { + "message": "Pienennä", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoomaus" + }, + "bringAllToFront": { + "message": "Tuo kaikki eteen", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Tietoja Bitwardenista" + }, + "services": { + "message": "Palvelut" + }, + "hideBitwarden": { + "message": "Piilota Bitwarden" + }, + "hideOthers": { + "message": "Piilota muut" + }, + "showAll": { + "message": "Näytä kaikki" + }, + "quitBitwarden": { + "message": "Sulje Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ kopioitu", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Ohje" + }, + "window": { + "message": "Ikkuna" + }, + "checkPassword": { + "message": "Tarkasta, onko salasana vuotanut." + }, + "passwordExposed": { + "message": "Salasana on paljastunut $VALUE$ tietovuodossa. Se tulisi vaihtaa.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Salasanaa ei löytynyt tunnetuista tietovuodoista. Sen pitäisi olla turvallinen." + }, + "baseDomain": { + "message": "Pääverkkotunnus", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Verkkotunnus", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Isäntä", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Tarkka" + }, + "startsWith": { + "message": "Alkaa" + }, + "regEx": { + "message": "Säännöllinen lauseke", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Tunnistustapa", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Tunnistuksen oletustapa", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Näytä tai piilota asetukset" + }, + "organization": { + "message": "Organisaatio", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Oletus" + }, + "exit": { + "message": "Poistu" + }, + "showHide": { + "message": "Näytä tai piilota", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Piilota ilmoitusalueelle" + }, + "alwaysOnTop": { + "message": "Aina päällimmäisenä", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Päivitetty", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Salasana päivitetty", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Vie holvi" + }, + "fileFormat": { + "message": "Tiedostomuoto" + }, + "warning": { + "message": "VAROITUS", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Vahvista holvin vienti" + }, + "exportWarningDesc": { + "message": "Tämä vienti sisältää holvisi tiedot salaamattomassa muodossa. Sinun ei tulisi säilyttää tai lähettää vietyä tiedostoa suojaamattomien kanavien (kuten sähköpostin) välityksellä. Poista se välittömästi kun sille ei enää ole käyttöä." + }, + "encExportKeyWarningDesc": { + "message": "Tämä vienti salaa tietosi käyttäen käyttäjätilisi salausavaimella. Jos joskus uudistat tilisi salausavaimen, tulee sinun viedä tiedot uudelleen, koska et voi enää purkaa nyt viedyn tiedoston salausta." + }, + "encExportAccountWarningDesc": { + "message": "Tilin salausavaimet ovat ainutlaatuisia jokaiselle Bitwarden-käyttäjätilille, joten et voi tuoda salattua vientitiedostoa toiselle tilille." + }, + "noOrganizationsList": { + "message": "Et kuulu mihinkään organisaatioon. Organisaatioiden avulla voit jakaa kohteita turvallisesti muiden käyttäjien kanssa." + }, + "noCollectionsInList": { + "message": "Ei näytettäviä kokoelmia." + }, + "ownership": { + "message": "Omistus" + }, + "whoOwnsThisItem": { + "message": "Kuka omistaa tämän kohteen?" + }, + "strong": { + "message": "Vahva", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Hyvä", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Heikko", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Heikko pääsalasana" + }, + "weakMasterPasswordDesc": { + "message": "Valitsemasi pääsalasana on heikko. Sinun tulisi käyttää vahvaa pääsalasanaa (tai salauslauseketta) suojataksesi Bitwarden-tilisi kunnolla. Haluatko varmasti käyttää tätä pääsalasanaa?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Avaa PIN-koodilla" + }, + "setYourPinCode": { + "message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos sovelluksesta." + }, + "pinRequired": { + "message": "PIN-koodi vaaditaan." + }, + "invalidPin": { + "message": "Virheellinen PIN-koodi." + }, + "unlockWithWindowsHello": { + "message": "Avaa Windows Hellolla" + }, + "windowsHelloConsentMessage": { + "message": "Vahvista Bitwarden." + }, + "unlockWithTouchId": { + "message": "Avaa Touch ID:llä" + }, + "touchIdConsentMessage": { + "message": "avaa holvisi" + }, + "noAutoPromptWindowsHello": { + "message": "Älä pyydä Windows Hello -kirjautumista käynnistettäessä." + }, + "noAutoPromptTouchId": { + "message": "Älä pyydä Touch ID -kirjautumista käynnistettäessä." + }, + "lockWithMasterPassOnRestart": { + "message": "Lukitse pääsalasanalla uudelleenkäynnistyksen yhteydessä" + }, + "preferences": { + "message": "Asetukset" + }, + "enableMenuBar": { + "message": "Käytä tehtäväpalkin kuvaketta" + }, + "enableMenuBarDesc": { + "message": "Näytä tehtäväpalkin kuvake aina." + }, + "hideToMenuBar": { + "message": "Piilota tehtäväpalkkiin" + }, + "selectOneCollection": { + "message": "Valitse ainakin yksi kokoelma." + }, + "premiumUpdated": { + "message": "Olet päivittänyt Premiumiin." + }, + "restore": { + "message": "Palauta" + }, + "premiumManageAlertAppStore": { + "message": "Voit hallita tilaustasi App Storessa. Haluatko siirtyä App Storeen nyt?" + }, + "legal": { + "message": "Oikeudelliset tiedot", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Käyttöehdot" + }, + "privacyPolicy": { + "message": "Tietosuojakäytäntö" + }, + "unsavedChangesConfirmation": { + "message": "Haluatko varmasti poistua? Jos poistut nyt, nykyisiä tietoja ei tallenneta." + }, + "unsavedChangesTitle": { + "message": "Tallentamattomia muutoksia" + }, + "clone": { + "message": "Kloonaa" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa generaattorisi asetuksiin." + }, + "vaultTimeoutAction": { + "message": "Holvin aikakatkaisun toiminto" + }, + "vaultTimeoutActionLockDesc": { + "message": "Lukittu holvi vaatii pääsalasanan syötön sen käyttämiseksi." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Uloskirjattu holvi vaatii uuden todennuksen sen käyttämiseksi." + }, + "lock": { + "message": "Lukitse", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Roskakori", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Hae roskakorista" + }, + "permanentlyDeleteItem": { + "message": "Poista kohde pysyvästi" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Haluatko varmasti poistaa kohteen pysyvästi?" + }, + "permanentlyDeletedItem": { + "message": "Kohde poistettu pysyvästi" + }, + "restoreItem": { + "message": "Palauta kohde" + }, + "restoreItemConfirmation": { + "message": "Haluatko varmasti palauttaa kohteen?" + }, + "restoredItem": { + "message": "Kohde palautettu" + }, + "permanentlyDelete": { + "message": "Poista pysyvästi" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen internet-yhteyden välityksellä. Haluatko varmasti käyttää asetusta?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Aikakatkaisun toiminnon vahvistus" + }, + "enterpriseSingleSignOn": { + "message": "Yrityksen kertakirjautuminen (SSO)" + }, + "setMasterPassword": { + "message": "Aseta pääsalasana" + }, + "ssoCompleteRegistration": { + "message": "Kirjautuaksesi sisään käyttäen kertakirjautumista (SSO), ole hyvä ja aseta holvillesi pääsalasana." + }, + "newMasterPass": { + "message": "Uusi pääsalasana" + }, + "confirmNewMasterPass": { + "message": "Vahvista uusi pääsalasana" + }, + "masterPasswordPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö edellyttää, että pääsalasanasi täyttää seuraavat vaatimukset:" + }, + "policyInEffectMinComplexity": { + "message": "Monimutkaisuuden vähimmäispistemäärä on $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Vähimmäispituus on $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Sisältää yhden tai useamman ison kirjaimen" + }, + "policyInEffectLowercase": { + "message": "Sisältää yhden tai useamman pienen kirjaimen" + }, + "policyInEffectNumbers": { + "message": "Sisältää yhden tai useamman numeron" + }, + "policyInEffectSpecial": { + "message": "Sisältää yhden tai useamman seuraavista erikoismerkeistä $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Uusi pääsalasanasi ei täytä käytännön määrittämiä vaatimuksia." + }, + "acceptPolicies": { + "message": "Valitsemalla tämän ruudun hyväksyt seuraavat:" + }, + "acceptPoliciesError": { + "message": "Käyttöehtoja ja tietosuojakäytäntöä ei ole vahvistettu." + }, + "enableBrowserIntegration": { + "message": "Käytä selainintegrointia" + }, + "enableBrowserIntegrationDesc": { + "message": "Selainintegrointia käytetään selaimessa biometriaa varten." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Selainintegrointia ei tueta" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Valitettavasti selainintegrointia tukee toistaiseksi vain Mac App Store -versio." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Selainintegrointia ei tueta" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Valitettavasti selainintegrointia ei toistaiseksi tueta sovelluksen Microsoft Store -versiossa." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Vaadi selainintegroinnin vahvistus" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Käytä ylimääräistä tietoturvakerrosta ja vaadi todennus tunnistelausekkeen avulla kun luot linkin työpöytäsi ja selaimesi välille. Kun käytössä, edellyttää käyttäjältä manuaalista todennusta aina yhteyden muodostuessa." + }, + "approve": { + "message": "Salli" + }, + "verifyBrowserTitle": { + "message": "Varmista yhteys selaimeen" + }, + "verifyBrowserDesc": { + "message": "Varmista, että näytetty tunnistelauseke on identtinen selainlaajennuksessa näkyvän lausekkeen kanssa." + }, + "biometricsNotEnabledTitle": { + "message": "Biometria ei ole käytössä" + }, + "biometricsNotEnabledDesc": { + "message": "Käyttääksesi biometriaa selaimessa, on biometria otettava käyttöön työpöytäsovelluksen asetuksista." + }, + "personalOwnershipSubmitError": { + "message": "Yrityksen asettaman käytännön johdosta kohteiden tallennus omaan holviisi ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." + }, + "hintEqualsPassword": { + "message": "Salasanavihjeesi ei voi olla sama kuin salasanasi." + }, + "personalOwnershipPolicyInEffect": { + "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." + }, + "allSends": { + "message": "Kaikki Sendit", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Tiedosto" + }, + "sendTypeText": { + "message": "Teksti" + }, + "searchSends": { + "message": "Hae Sendeistä", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Muokkaa Sendiä", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Oma holvi" + }, + "text": { + "message": "Teksti" + }, + "deletionDate": { + "message": "Poistoajankohta" + }, + "deletionDateDesc": { + "message": "Send poistuu pysyvästi määritettynä ajankohtana.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Erääntymisajankohta" + }, + "expirationDateDesc": { + "message": "Send erääntyy määritettynä ajankohtana.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Käyttöoikeuksien enimmäismäärä" + }, + "maxAccessCountDesc": { + "message": "Jos määritetty, käyttäjät eivät voi avata Sendiä käyttökertojen enimmäismäärän täytyttyä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Nykyinen käyttökertojen määrä" + }, + "disableSend": { + "message": "Poista Send käytöstä, jottei kukaan voi avata sitä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Halutessasi, vaadi käyttäjiä syöttämään salasana Sendin avaamiseksi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Yksityisiä merkintöjä tästä Sendistä.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send-linkki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send-linkki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Piilota teksti oletuksena kun Send avataan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send luotu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Sendiä muokattu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send poistettu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Uusi salasana" + }, + "whatTypeOfSend": { + "message": "Minkä tyyppinen Send tämä on?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send luotu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Teksti, jonka haluat lähettää." + }, + "sendFileDesc": { + "message": "Tiedosto, jonka haluat lähettää." + }, + "days": { + "message": "$DAYS$ päivää", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 päivä" + }, + "custom": { + "message": "Mukautettu" + }, + "deleteSendConfirmation": { + "message": "Haluatko varmasti poistaa Sendin?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopioi Sendin linkki leikepöydälle", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopioi Sendin linkki leikepöydälle tallennettaessa." + }, + "sendDisabled": { + "message": "Send on poistettu käytöstä", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Yrityksen käytännön vuoksi voit poistaa vain olemassa olevan Sendin.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopioi linkki" + }, + "disabled": { + "message": "Poistettu käytöstä" + }, + "maxAccessCountReached": { + "message": "Käyttökertojen enimmäismäärä saavutettu" + }, + "expired": { + "message": "Erääntynyt" + }, + "pendingDeletion": { + "message": "Odottaa poistoa" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn-todennus" + }, + "hideEmail": { + "message": "Piilota sähköpostiosoitteeni vastaanottajilta." + }, + "sendOptionsPolicyInEffect": { + "message": "Yksi tai useampi organisaatiokäytäntö vaikuttaa Send-asetuksiisi." + }, + "emailVerificationRequired": { + "message": "Sähköpostiosoitteen vahvistus vaaditaan" + }, + "emailVerificationRequiredDesc": { + "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi tätä ominaisuutta." + }, + "passwordPrompt": { + "message": "Pääsalasanan uudelleenkysely" + }, + "passwordConfirmation": { + "message": "Pääsalasanan vahvistus" + }, + "passwordConfirmationDesc": { + "message": "Toiminto on suojattu. Jatkaaksesi, syötä pääsalasanasi uudelleen vahvistaaksesi henkilöllisyytesi." + }, + "updatedMasterPassword": { + "message": "Pääsalasana on päivitetty" + }, + "updateMasterPassword": { + "message": "Päivitä pääsalasana" + }, + "updateMasterPasswordWarning": { + "message": "Organisaatiosi ylläpito on hiljattain vaihtanut pääsalasanasi. Käyttääksesi holvia, on sinun päivitettävä se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." + }, + "hours": { + "message": "Tuntia" + }, + "minutes": { + "message": "Minuuttia" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Organisaatiosi käytännöt vaikuttavat holvisi aikakatkaisuun. Suurin sallittu viive on $HOURS$ tunti(a) ja $MINUTES$ minuutti(a)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Holvisi aikakatkaisuviive ylittää organisaatiosi asettamat rajoitukset." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automaattinen liitos" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Organisaatiolla on käytäntö, joka liittää tilisi automaattisesti salasanan palautusapuun. Liitos sallii organisaation ylläpitäjien vaihtaa pääsalasanasi." + }, + "vaultExportDisabled": { + "message": "Holvin vienti on poistettu käytöstä" + }, + "personalVaultExportPolicyInEffect": { + "message": "Yksi tai useampi organisaation käytäntö estää henkilökohtaisen holvisi viennin." + }, + "addAccount": { + "message": "Lisää tili" + }, + "removeMasterPassword": { + "message": "Poista pääsalasana" + }, + "removedMasterPassword": { + "message": "Pääsalasana on poistettu." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ käyttää kertakirjautumista (SSO) oman avainpalvelimensa kanssa. Organisaation jäsenet eivät enää tarvitse pääsalasanaa kirjautumiseen.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Poistu organisaatiosta" + }, + "leaveOrganizationConfirmation": { + "message": "Haluatko varmasti poistua tästä organisaatiosta?" + }, + "leftOrganization": { + "message": "Olet poistunut organisaatiosta." + }, + "ssoKeyConnectorUnavailable": { + "message": "Avainyhdistäjää ei tavoiteta. Yritä myöhemmin uudelleen." + }, + "lockAllVaults": { + "message": "Lukitse kaikki holvit" + }, + "accountLimitReached": { + "message": "Enintään 5 tiliä voi olla samanaikaisesti kirjautuneena." + }, + "accountPreferences": { + "message": "Asetukset" + }, + "appPreferences": { + "message": "Sovellusasetukset (kaikki tilit)" + }, + "accountSwitcherLimitReached": { + "message": "Tilien enimmäismäärä on saavutettu. Kirjaa jokin niistä ulos lisätäksesi tilin." + }, + "settingsTitle": { + "message": "Sovellusasetukset tunnukselle $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Vaihda tiliä" + }, + "options": { + "message": "Valinnat" + }, + "sessionTimeout": { + "message": "Istuntosi on aikakatkaistu. Palaa takaisin ja yritä kirjautua uudelleen." + }, + "exportingPersonalVaultTitle": { + "message": "Henkilökohtaisen holvin vienti" + }, + "exportingPersonalVaultDescription": { + "message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaiset holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generaattori" + }, + "whatWouldYouLikeToGenerate": { + "message": "Mitä haluat luoda?" + }, + "passwordType": { + "message": "Salasanan tyyppi" + }, + "regenerateUsername": { + "message": "Luo uusi käyttäjätunnus" + }, + "generateUsername": { + "message": "Luo käyttäjätunnus" + }, + "usernameType": { + "message": "Käyttäjätunnuksen tyyppi" + }, + "plusAddressedEmail": { + "message": "Plus-osoitteinen sähköposti" + }, + "plusAddressedEmailDesc": { + "message": "Käytä sähköpostipalvelusi aliosoiteominaisuuksia." + }, + "catchallEmail": { + "message": "Catch-all-sähköpostiosoite" + }, + "catchallEmailDesc": { + "message": "Käytä verkkotunnuksellesi määritettyä catch-all-postilaatikkoa." + }, + "random": { + "message": "Satunnainen" + }, + "randomWord": { + "message": "Satunnainen sana" + }, + "websiteName": { + "message": "Verkkosivuston nimi" + }, + "service": { + "message": "Palvelu" + } +} diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json new file mode 100644 index 0000000000..1b909d5de4 --- /dev/null +++ b/apps/desktop/src/locales/fil/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json new file mode 100644 index 0000000000..9e45fc97fd --- /dev/null +++ b/apps/desktop/src/locales/fr/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtres" + }, + "allItems": { + "message": "Tous les éléments" + }, + "favorites": { + "message": "Favoris" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Identifiant" + }, + "typeCard": { + "message": "Carte de paiement" + }, + "typeIdentity": { + "message": "Identité" + }, + "typeSecureNote": { + "message": "Note sécurisée" + }, + "folders": { + "message": "Dossiers" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Rechercher dans le coffre" + }, + "addItem": { + "message": "Ajouter un élément" + }, + "shared": { + "message": "Partagé" + }, + "share": { + "message": "Partager" + }, + "moveToOrganization": { + "message": "Déplacer vers l'organisation" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ a été déplacé vers $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choisissez une organisation vers laquelle vous souhaitez déplacer cet élément. Déplacer un élément vers une organisation transfère la propriété de l'élément à cette organisation. Vous ne serez plus le propriétaire direct de cet élément une fois qu'il aura été déplacé." + }, + "attachments": { + "message": "Pièces jointes" + }, + "viewItem": { + "message": "Afficher l'élément" + }, + "name": { + "message": "Nom" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nouvel URI" + }, + "username": { + "message": "Nom d'utilisateur" + }, + "password": { + "message": "Mot de passe" + }, + "passphrase": { + "message": "Phrase de passe" + }, + "editItem": { + "message": "Modifier l'élément" + }, + "emailAddress": { + "message": "Adresse e-mail" + }, + "verificationCodeTotp": { + "message": "Code de vérification (TOTP)" + }, + "website": { + "message": "Site web" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Champs personnalisés" + }, + "launch": { + "message": "Ouvrir" + }, + "copyValue": { + "message": "Copier la valeur", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Réduire lors de la copie dans le presse-papiers" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Réduire lors de la copie des données d'un élément dans le presse-papiers." + }, + "toggleVisibility": { + "message": "Afficher/Masquer" + }, + "toggleCollapse": { + "message": "Déplier ou replier", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Nom du titulaire de la carte" + }, + "number": { + "message": "Numéro" + }, + "brand": { + "message": "Réseau de paiement" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Code de sécurité" + }, + "identityName": { + "message": "Identité" + }, + "company": { + "message": "Société" + }, + "ssn": { + "message": "Numéro de sécurité sociale" + }, + "passportNumber": { + "message": "Numéro de passeport" + }, + "licenseNumber": { + "message": "Numéro de permis" + }, + "email": { + "message": "E-mail" + }, + "phone": { + "message": "Téléphone" + }, + "address": { + "message": "Adresse" + }, + "premiumRequired": { + "message": "Adhésion Premium requise" + }, + "premiumRequiredDesc": { + "message": "Une adhésion premium est requise pour utiliser cette fonctionnalité." + }, + "errorOccurred": { + "message": "Une erreur est survenue." + }, + "error": { + "message": "Erreur" + }, + "january": { + "message": "Janvier" + }, + "february": { + "message": "Février" + }, + "march": { + "message": "Mars" + }, + "april": { + "message": "Avril" + }, + "may": { + "message": "Mai" + }, + "june": { + "message": "Juin" + }, + "july": { + "message": "Juillet" + }, + "august": { + "message": "Août" + }, + "september": { + "message": "Septembre" + }, + "october": { + "message": "Octobre" + }, + "november": { + "message": "Novembre" + }, + "december": { + "message": "Décembre" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titre" + }, + "mr": { + "message": "M." + }, + "mrs": { + "message": "Mme" + }, + "ms": { + "message": "Mlle" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mois d'expiration" + }, + "expirationYear": { + "message": "Année d'expiration" + }, + "select": { + "message": "Sélectionner" + }, + "other": { + "message": "Autre" + }, + "generatePassword": { + "message": "Générer un mot de passe" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "Prénom" + }, + "middleName": { + "message": "Deuxième prénom" + }, + "lastName": { + "message": "Nom" + }, + "fullName": { + "message": "Nom et prénom" + }, + "address1": { + "message": "Adresse 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "Ville" + }, + "stateProvince": { + "message": "État / Région" + }, + "zipPostalCode": { + "message": "Code postal" + }, + "country": { + "message": "Pays" + }, + "save": { + "message": "Enregistrer" + }, + "cancel": { + "message": "Annuler" + }, + "delete": { + "message": "Supprimer" + }, + "favorite": { + "message": "Favori" + }, + "edit": { + "message": "Modifier" + }, + "authenticatorKeyTotp": { + "message": "Clé d'authentification (TOTP)" + }, + "folder": { + "message": "Dossier" + }, + "newCustomField": { + "message": "Nouveau champ personnalisé" + }, + "value": { + "message": "Valeur" + }, + "dragToSort": { + "message": "Glissez pour trier" + }, + "cfTypeText": { + "message": "Texte" + }, + "cfTypeHidden": { + "message": "Masqué" + }, + "cfTypeBoolean": { + "message": "Booléen" + }, + "cfTypeLinked": { + "message": "Lié", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Valeur liée", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Supprimer" + }, + "nameRequired": { + "message": "Le nom est requis." + }, + "addedItem": { + "message": "Élément ajouté" + }, + "editedItem": { + "message": "Élément modifié" + }, + "deleteItem": { + "message": "Supprimer l'élément" + }, + "deleteFolder": { + "message": "Supprimer le dossier" + }, + "deleteAttachment": { + "message": "Supprimer la pièce jointe" + }, + "deleteItemConfirmation": { + "message": "Êtes-vous sûr de vouloir envoyer cet élément vers la corbeille ?" + }, + "deletedItem": { + "message": "L'élément a été envoyé à la corbeille" + }, + "overwritePasswordConfirmation": { + "message": "Êtes-vous sûr de vouloir écraser le mot de passe actuel ?" + }, + "overwriteUsername": { + "message": "Remplacer le nom d'utilisateur" + }, + "overwriteUsernameConfirmation": { + "message": "Êtes-vous sûr(e) de vouloir remplacer le mot de passe actuel ?" + }, + "noneFolder": { + "message": "Aucun dossier", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Ajouter un dossier" + }, + "editFolder": { + "message": "Modifier le dossier" + }, + "regeneratePassword": { + "message": "Générer un nouveau mot de passe" + }, + "copyPassword": { + "message": "Copier le mot de passe" + }, + "copyUri": { + "message": "Copier l'URI" + }, + "copyVerificationCodeTotp": { + "message": "Copier le code de vérification (TOTP)" + }, + "length": { + "message": "Longueur" + }, + "numWords": { + "message": "Nombre de mots" + }, + "wordSeparator": { + "message": "Séparateur de mots" + }, + "capitalize": { + "message": "Mettre la première lettre de chaque mot en majuscule", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inclure un chiffre" + }, + "close": { + "message": "Fermer" + }, + "minNumbers": { + "message": "Nombre minimum de chiffres" + }, + "minSpecial": { + "message": "Nombre minimum de caractères spéciaux", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Éviter les caractères ambigus" + }, + "searchCollection": { + "message": "Rechercher dans la collection" + }, + "searchFolder": { + "message": "Rechercher dans le dossier" + }, + "searchFavorites": { + "message": "Rechercher dans les favoris" + }, + "searchType": { + "message": "Rechercher dans le type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Ajouter une nouvelle pièce jointe" + }, + "deletedAttachment": { + "message": "Pièce jointe supprimée" + }, + "deleteAttachmentConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer cette pièce jointe ?" + }, + "attachmentSaved": { + "message": "La pièce jointe a été enregistrée." + }, + "file": { + "message": "Fichier" + }, + "selectFile": { + "message": "Sélectionnez un fichier." + }, + "maxFileSize": { + "message": "La taille maximale du fichier est de 500 Mo." + }, + "updateKey": { + "message": "Vous ne pouvez pas utiliser cette fonctionnalité tant que vous ne mettez pas à jour votre clé de chiffrement." + }, + "editedFolder": { + "message": "Dossier modifié" + }, + "addedFolder": { + "message": "Dossier ajouté" + }, + "deleteFolderConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer ce dossier ?" + }, + "deletedFolder": { + "message": "Dossier supprimé" + }, + "loginOrCreateNewAccount": { + "message": "Identifiez-vous ou créez un nouveau compte pour accéder à votre coffre sécurisé." + }, + "createAccount": { + "message": "Créer un compte" + }, + "logIn": { + "message": "S'identifier" + }, + "submit": { + "message": "Soumettre" + }, + "masterPass": { + "message": "Mot de passe maître" + }, + "masterPassDesc": { + "message": "Le mot de passe maître est le mot de passe que vous utilisez pour accéder à votre coffre. Il est très important de ne pas l'oublier. Il n'existe aucun moyen de le récupérer si vous le perdez." + }, + "masterPassHintDesc": { + "message": "Un indice de mot de passe maître peut vous aider à vous rappeler de votre mot de passe en cas d'oubli." + }, + "reTypeMasterPass": { + "message": "Saisissez à nouveau le mot de passe maître" + }, + "masterPassHint": { + "message": "Indice du mot de passe maître (facultatif)" + }, + "settings": { + "message": "Paramètres" + }, + "passwordHint": { + "message": "Indice du mot de passe" + }, + "enterEmailToGetHint": { + "message": "Saisissez l'adresse e-mail de votre compte pour recevoir l'indice de votre mot de passe maître." + }, + "getMasterPasswordHint": { + "message": "Obtenir l'indice du mot de passe maître" + }, + "emailRequired": { + "message": "L'adresse e-mail est requise." + }, + "invalidEmail": { + "message": "Adresse e-mail invalide." + }, + "masterPassRequired": { + "message": "Le mot de passe maître est requis." + }, + "masterPassLength": { + "message": "Le mot de passe maître doit au moins contenir 8 caractères." + }, + "masterPassDoesntMatch": { + "message": "La confirmation du mot de passe maître ne correspond pas." + }, + "newAccountCreated": { + "message": "Votre nouveau compte a été créé ! Vous pouvez maintenant vous authentifier." + }, + "masterPassSent": { + "message": "Nous vous avons envoyé un e-mail contenant votre indice de mot de passe maître." + }, + "unexpectedError": { + "message": "Une erreur inattendue est survenue." + }, + "itemInformation": { + "message": "Informations sur l'élément" + }, + "noItemsInList": { + "message": "Aucun élément à afficher." + }, + "sendVerificationCode": { + "message": "Envoyer un code de vérification à votre adresse email" + }, + "sendCode": { + "message": "Envoyer le code" + }, + "codeSent": { + "message": "Code envoyé" + }, + "verificationCode": { + "message": "Code de vérification" + }, + "confirmIdentity": { + "message": "Confirmez votre identité pour continuer." + }, + "verificationCodeRequired": { + "message": "Le code de vérification est requis." + }, + "invalidVerificationCode": { + "message": "Code de vérification invalide" + }, + "continue": { + "message": "Continuer" + }, + "enterVerificationCodeApp": { + "message": "Saisissez le code de vérification à 6 chiffres depuis votre application d'authentification." + }, + "enterVerificationCodeEmail": { + "message": "Saisissez le code de vérification à 6 chiffres qui vous a été envoyé par e-mail à $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-mail de vérification envoyé à $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Rester connecté" + }, + "sendVerificationCodeEmailAgain": { + "message": "Envoyer à nouveau l'e-mail du code de vérification" + }, + "useAnotherTwoStepMethod": { + "message": "Utiliser une autre méthode de connexion en deux étapes" + }, + "insertYubiKey": { + "message": "Insérez votre YubiKey dans le port USB de votre ordinateur puis appuyez sur son bouton." + }, + "insertU2f": { + "message": "Insérez votre clé de sécurité dans le port USB de votre ordinateur. S'il dispose d'un bouton, appuyez dessus." + }, + "recoveryCodeDesc": { + "message": "Accès perdu à tous vos services d'authentification à double facteurs ? Utilisez votre code de récupération pour désactiver tous les services de double authentifications sur votre compte." + }, + "recoveryCodeTitle": { + "message": "Code de récupération" + }, + "authenticatorAppTitle": { + "message": "Application d'authentification" + }, + "authenticatorAppDesc": { + "message": "Utiliser une application d'authentification (comme Authy ou Google Authenticator) pour générer des codes de vérification basés sur le temps.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Clé de sécurité YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Utiliser une YubiKey pour accéder à votre compte. Fonctionne avec les appareils YubiKey 4, 4 Nano, 4C et NEO." + }, + "duoDesc": { + "message": "S'authentifier avec Duo Security via l'application Duo Mobile, un SMS, un appel téléphonique, ou une clé de sécurité U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Sécurisez votre organisation avec Duo Security à l'aide de l'application Duo Mobile, l'envoi d'un SMS, un appel vocal ou une clé de sécurité U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "WebAuthn FIDO2" + }, + "webAuthnDesc": { + "message": "Utilisez n'importe quelle clé de sécurité compatible WebAuthn pour accéder à votre compte." + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Les codes de vérification vont vous être envoyés par e-mail." + }, + "loginUnavailable": { + "message": "Connexion impossible" + }, + "noTwoStepProviders": { + "message": "Ce compte dispose d'une authentification en deux étapes, cependant aucun de vos services d'authentification en deux étapes n'est supporté par cet appareil." + }, + "noTwoStepProviders2": { + "message": "Veuillez ajouter des services additionnels qui supportent une utilisation sur plusieurs appareils (comme une application d'authentification)." + }, + "twoStepOptions": { + "message": "Options d'identification en deux étapes" + }, + "selfHostedEnvironment": { + "message": "Environnement auto-hébergé" + }, + "selfHostedEnvironmentFooter": { + "message": "Spécifiez l'URL de base de votre installation Bitwarden auto-hébergée." + }, + "customEnvironment": { + "message": "Environnement personnalisé" + }, + "customEnvironmentFooter": { + "message": "Pour utilisateurs avancés. Vous pouvez spécifier une URL de base indépendante pour chaque service." + }, + "baseUrl": { + "message": "URL du serveur" + }, + "apiUrl": { + "message": "URL du serveur de l'API" + }, + "webVaultUrl": { + "message": "URL du serveur du coffre web" + }, + "identityUrl": { + "message": "URL du serveur d'identification" + }, + "notificationsUrl": { + "message": "URL du serveur de notifications" + }, + "iconsUrl": { + "message": "URL du serveur d’icônes" + }, + "environmentSaved": { + "message": "Les URLs d'environnement ont été enregistrées." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Oui" + }, + "no": { + "message": "Non" + }, + "overwritePassword": { + "message": "Écraser le mot de passe" + }, + "learnMore": { + "message": "En savoir plus" + }, + "featureUnavailable": { + "message": "Fonctionnalité non disponible" + }, + "loggedOut": { + "message": "Déconnecté" + }, + "loginExpired": { + "message": "Votre session a expiré." + }, + "logOutConfirmation": { + "message": "Êtes-vous sûr de vouloir vous déconnecter ?" + }, + "logOut": { + "message": "Déconnexion" + }, + "addNewLogin": { + "message": "Ajouter un nouvel identifiant" + }, + "addNewItem": { + "message": "Ajouter un nouvel élément" + }, + "addNewFolder": { + "message": "Ajouter un nouveau dossier" + }, + "view": { + "message": "Voir" + }, + "account": { + "message": "Compte" + }, + "loading": { + "message": "Chargement ..." + }, + "lockVault": { + "message": "Verrouiller le coffre" + }, + "passwordGenerator": { + "message": "Générateur de mot de passe" + }, + "contactUs": { + "message": "Nous contacter" + }, + "getHelp": { + "message": "Obtenir de l'aide" + }, + "fileBugReport": { + "message": "Envoyer un rapport de bug" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Suivez-nous" + }, + "syncVault": { + "message": "Synchroniser le coffre" + }, + "changeMasterPass": { + "message": "Modifier le mot de passe maître" + }, + "changeMasterPasswordConfirmation": { + "message": "Vous pouvez modifier votre mot de passe maître depuis le coffre web sur bitwarden.com. Souhaitez-vous visiter le site maintenant ?" + }, + "fingerprintPhrase": { + "message": "Phrase d'empreinte", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "La phrase d'empreinte de votre compte", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Aller au coffre web" + }, + "getMobileApp": { + "message": "Télécharger l'application mobile" + }, + "getBrowserExtension": { + "message": "Télécharger l'extension de navigateur" + }, + "syncingComplete": { + "message": "Synchronisation terminée" + }, + "syncingFailed": { + "message": "Échec de la synchronisation" + }, + "yourVaultIsLocked": { + "message": "Votre coffre est verrouillé. Vérifiez votre identité pour continuer." + }, + "unlock": { + "message": "Déverrouiller" + }, + "loggedInAsOn": { + "message": "Connecté en tant que $EMAIL$ sur $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Mot de passe maître invalide" + }, + "twoStepLoginConfirmation": { + "message": "L'identification en deux étapes sécurise davantage votre compte en vous demandant à chaque connexion de saisir un code de sécurité obtenu depuis un autre appareil, via une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique, ou un e-mail. L'identification en deux étapes peut être activée depuis le coffre web sur bitwarden.com. Voulez-vous vous visiter le site web maintenant ?" + }, + "twoStepLogin": { + "message": "Identification en deux étapes" + }, + "vaultTimeout": { + "message": "Délai d'expiration du coffre" + }, + "vaultTimeoutDesc": { + "message": "Choisissez quand votre coffre expirera et effectuera l'action sélectionnée." + }, + "immediately": { + "message": "Immédiatement" + }, + "tenSeconds": { + "message": "10 secondes" + }, + "twentySeconds": { + "message": "20 secondes" + }, + "thirtySeconds": { + "message": "30 secondes" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 heure" + }, + "fourHours": { + "message": "4 heures" + }, + "onIdle": { + "message": "À l'inactivité du système" + }, + "onSleep": { + "message": "À la mise en veille du système" + }, + "onLocked": { + "message": "Au verrouillage du système" + }, + "onRestart": { + "message": "Au redémarrage" + }, + "never": { + "message": "Jamais" + }, + "security": { + "message": "Sécurité" + }, + "clearClipboard": { + "message": "Effacer le presse-papiers", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Effacer automatiquement de votre presse-papiers les valeurs copiées.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Désactiver les icônes des sites web" + }, + "disableFaviconDesc": { + "message": "Les icônes des sites web permettent d'avoir une icône reconnaissable à côté de chaque identifiant dans votre coffre." + }, + "enableMinToTray": { + "message": "Réduire dans la zone de notification" + }, + "enableMinToTrayDesc": { + "message": "Lorsque la fenêtre est réduite, afficher une icône dans la zone de notification à la place." + }, + "enableMinToMenuBar": { + "message": "Réduire dans la barre de menu" + }, + "enableMinToMenuBarDesc": { + "message": "Lorsque la fenêtre est réduite, privilégier l'affichage d'une icône dans la barre de menu." + }, + "enableCloseToTray": { + "message": "Fermer dans la zone de notification" + }, + "enableCloseToTrayDesc": { + "message": "Lorsque la fenêtre est fermée, afficher une icône dans la zone de notification." + }, + "enableCloseToMenuBar": { + "message": "Fermer vers la barre de menu" + }, + "enableCloseToMenuBarDesc": { + "message": "Lorsque la fenêtre est fermée, privilégier l'affichage d'une icône dans la barre de menu." + }, + "enableTray": { + "message": "Activer le raccourci dans la zone de notification" + }, + "enableTrayDesc": { + "message": "Toujours afficher une icône dans la zone de notification." + }, + "startToTray": { + "message": "Démarrer dans la zone de notification" + }, + "startToTrayDesc": { + "message": "Au premier démarrage de l'application, afficher uniquement une icône dans la zone de notification." + }, + "startToMenuBar": { + "message": "Démarrer dans la barre de menu" + }, + "startToMenuBarDesc": { + "message": "Au premier démarrage de l'application, afficher uniquement une icône dans la barre de menu." + }, + "openAtLogin": { + "message": "Démarrer automatiquement à la connexion" + }, + "openAtLoginDesc": { + "message": "Démarrer l'application Bitwarden automatiquement à la connexion." + }, + "alwaysShowDock": { + "message": "Toujours afficher dans le Dock" + }, + "alwaysShowDockDesc": { + "message": "Afficher l'icône Bitwarden dans le Dock même si l'application est réduite dans la barre de menus." + }, + "confirmTrayTitle": { + "message": "Confirmer la désactivation de la zone de notification" + }, + "confirmTrayDesc": { + "message": "Désactiver cette option désactivera également tous les autres paramètres liés à la zone de notifications." + }, + "language": { + "message": "Langue" + }, + "languageDesc": { + "message": "Modifier la langue utilisée par l'application. Un redémarrage est requis." + }, + "theme": { + "message": "Thème" + }, + "themeDesc": { + "message": "Modifier la couleur du thème de l'application." + }, + "dark": { + "message": "Sombre", + "description": "Dark color" + }, + "light": { + "message": "Clair", + "description": "Light color" + }, + "copy": { + "message": "Copier", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Vérifier les mises à jour" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Redémarrer pour mettre à jour" + }, + "restartToUpdateDesc": { + "message": "La version $VERSION_NUM$ est prête à être installée. Vous devez redémarrer Bitwarden pour terminer l'installation. Souhaitez-vous redémarrer et mettre à jour maintenant ?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Mise à jour disponible" + }, + "updateAvailableDesc": { + "message": "Une mise à jour a été trouvée. Souhaitez-vous la télécharger maintenant ?" + }, + "restart": { + "message": "Redémarrer" + }, + "later": { + "message": "Plus tard" + }, + "noUpdatesAvailable": { + "message": "Aucune mise à jour n'est actuellement disponible. Vous utilisez la dernière version." + }, + "updateError": { + "message": "Erreur de mise à jour" + }, + "unknown": { + "message": "Inconnu" + }, + "copyUsername": { + "message": "Copier le nom d'utilisateur" + }, + "copyNumber": { + "message": "Copier le numéro", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copier le code de sécurité", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Adhésion Premium" + }, + "premiumManage": { + "message": "Gérer l'adhésion" + }, + "premiumManageAlert": { + "message": "Vous pouvez gérer votre adhésion depuis le coffre web sur bitwarden.com. Souhaitez-vous visiter le site web maintenant ?" + }, + "premiumRefresh": { + "message": "Actualiser l'adhésion" + }, + "premiumNotCurrentMember": { + "message": "Vous n'êtes actuellement pas un membre premium." + }, + "premiumSignUpAndGet": { + "message": "Devenez un membre premium et obtenez :" + }, + "premiumSignUpStorage": { + "message": "1 Go de stockage de fichiers chiffrés." + }, + "premiumSignUpTwoStep": { + "message": "Options d'identification en deux étapes additionnelles comme YubiKey, FIDO U2F et Duo." + }, + "premiumSignUpReports": { + "message": "Rapports sur l'hygiène des mots de passe, la santé des comptes et les fuites de données pour assurer la sécurité de votre coffre." + }, + "premiumSignUpTotp": { + "message": "Génération d'un code de vérification TOTP (2FA) pour les identifiants de votre coffre." + }, + "premiumSignUpSupport": { + "message": "Support client prioritaire." + }, + "premiumSignUpFuture": { + "message": "Toutes les futures options premium. D'autres suivront prochainement !" + }, + "premiumPurchase": { + "message": "Acheter Premium" + }, + "premiumPurchaseAlert": { + "message": "Vous pouvez opter pour une adhésion premium depuis le coffre web sur bitwarden.com. Souhaitez-vous visiter le site web maintenant ?" + }, + "premiumCurrentMember": { + "message": "Vous êtes un adhérent premium !" + }, + "premiumCurrentMemberThanks": { + "message": "Merci de supporter Bitwarden." + }, + "premiumPrice": { + "message": "Tout pour seulement $PRICE$ /an !", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Actualisation terminée" + }, + "passwordHistory": { + "message": "Historique des mots de passe" + }, + "clear": { + "message": "Effacer", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Aucun mot de passe à afficher." + }, + "undo": { + "message": "Annuler" + }, + "redo": { + "message": "Rétablir" + }, + "cut": { + "message": "Couper", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Coller", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Tout sélectionner" + }, + "zoomIn": { + "message": "Zoom avant" + }, + "zoomOut": { + "message": "Zoom arrière" + }, + "resetZoom": { + "message": "Réinitialiser le zoom" + }, + "toggleFullScreen": { + "message": "Afficher en plein écran" + }, + "reload": { + "message": "Recharger" + }, + "toggleDevTools": { + "message": "Afficher/cacher les outils de développement" + }, + "minimize": { + "message": "Réduire", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Tout ramener au premier plan", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "À propos de Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Masquer Bitwarden" + }, + "hideOthers": { + "message": "Masquer les autres" + }, + "showAll": { + "message": "Tout afficher" + }, + "quitBitwarden": { + "message": "Quitter Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copié", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Aide" + }, + "window": { + "message": "Fenêtre" + }, + "checkPassword": { + "message": "Vérifier si le mot de passe a été exposé." + }, + "passwordExposed": { + "message": "Ce mot de passe a été exposé $VALUE$ fois dans des fuites de données. Vous devriez le changer.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Ce mot de passe n'a été trouvé dans aucune fuite de données connue. Il semble sécurisé." + }, + "baseDomain": { + "message": "Domaine de base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nom du domaine", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Hôte", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Commence par" + }, + "regEx": { + "message": "Expression régulière", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Détection de correspondance", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Détection de correspondance par défaut", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Afficher/masquer les options" + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Par défaut" + }, + "exit": { + "message": "Quitter" + }, + "showHide": { + "message": "Afficher/Masquer", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Masquer" + }, + "alwaysOnTop": { + "message": "Toujours au premier plan", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Mis à jour ", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Mot de passe mis à jour", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exporter le coffre" + }, + "fileFormat": { + "message": "Format de fichier" + }, + "warning": { + "message": "AVERTISSEMENT", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirmer l'export du coffre" + }, + "exportWarningDesc": { + "message": "Cet export contient les données de votre coffre dans un format non chiffré. Vous ne devriez ni le stocker ni l'envoyer via des canaux non sécurisés (tel que par e-mail). Supprimez-le immédiatement après l'avoir utilisé." + }, + "encExportKeyWarningDesc": { + "message": "Cet export chiffre vos données en utilisant la clé de chiffrement de votre compte. Si jamais vous modifiez la clé de chiffrement de votre compte, vous devriez exporter à nouveau car vous ne pourrez pas déchiffrer ce fichier." + }, + "encExportAccountWarningDesc": { + "message": "Les clés de chiffrement du compte sont spécifiques à chaque utilisateur Bitwarden. Vous ne pouvez donc pas importer d'export chiffré dans un compte différent." + }, + "noOrganizationsList": { + "message": "Vous ne faites partie d'aucune organisation. Les organisations vous permettent de partager des éléments de façon sécurisée avec d'autres utilisateurs." + }, + "noCollectionsInList": { + "message": "Aucune collection à afficher." + }, + "ownership": { + "message": "Propriété" + }, + "whoOwnsThisItem": { + "message": "À qui appartient cet élément ?" + }, + "strong": { + "message": "Fort", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Suffisant", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Faible", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Mot de passe maître faible" + }, + "weakMasterPasswordDesc": { + "message": "Le mot de passe maître que vous avez choisi est faible. Vous devriez utiliser un mot de passe (ou une phrase secrète) fort(e) pour protéger correctement votre compte Bitwarden. Êtes-vous sûr de vouloir utiliser ce mot de passe maître ?" + }, + "pin": { + "message": "Code PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Déverrouiller avec un code PIN" + }, + "setYourPinCode": { + "message": "Définissez votre code PIN pour déverrouiller Bitwarden. Les paramètres relatifs à votre code PIN seront réinitialisés si vous vous déconnectez complètement de l'application." + }, + "pinRequired": { + "message": "Le code PIN est requis." + }, + "invalidPin": { + "message": "Code PIN invalide." + }, + "unlockWithWindowsHello": { + "message": "Déverrouiller avec Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Vérifier pour Bitwarden." + }, + "unlockWithTouchId": { + "message": "Déverrouiller avec Touch ID" + }, + "touchIdConsentMessage": { + "message": "déverouiller votre coffre" + }, + "noAutoPromptWindowsHello": { + "message": "Ne pas proposer Windows Hello au lancement." + }, + "noAutoPromptTouchId": { + "message": "Ne pas proposer Touch ID au lancement." + }, + "lockWithMasterPassOnRestart": { + "message": "Verrouiller avec le mot de passe maître lors du redémarrage" + }, + "preferences": { + "message": "Préférences" + }, + "enableMenuBar": { + "message": "Activer l'icône dans la barre de menu" + }, + "enableMenuBarDesc": { + "message": "Toujours afficher une icône dans la barre de menu." + }, + "hideToMenuBar": { + "message": "Masquer dans la barre de menu" + }, + "selectOneCollection": { + "message": "Vous devez sélectionner au moins une collection." + }, + "premiumUpdated": { + "message": "Vous venez de passer à un compte Premium." + }, + "restore": { + "message": "Restaurer" + }, + "premiumManageAlertAppStore": { + "message": "Vous pouvez gérer votre abonnement depuis l'App Store. Voulez-vous visiter l'App Store maintenant ?" + }, + "legal": { + "message": "Légal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Conditions d'utilisation" + }, + "privacyPolicy": { + "message": "Politique de confidentialité" + }, + "unsavedChangesConfirmation": { + "message": "Êtes-vous sûr de vouloir quitter ? Si vous le faites maintenant, vos informations actuelles ne seront pas sauvegardées." + }, + "unsavedChangesTitle": { + "message": "Modifications non sauvegardées" + }, + "clone": { + "message": "Cloner" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation affectent les paramètres de votre générateur." + }, + "vaultTimeoutAction": { + "message": "Action lors de l'expiration du délai du coffre" + }, + "vaultTimeoutActionLockDesc": { + "message": "Un coffre verrouillé requiert la saisie de votre mot de passe maître pour y avoir à nouveau accès." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Un coffre déconnecté nécessite que vous vous ré-authentifiez pour y accéder de nouveau." + }, + "lock": { + "message": "Verrouiller", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Corbeille", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Rechercher dans la corbeille" + }, + "permanentlyDeleteItem": { + "message": "Supprimer définitivement l'élément" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer définitivement cet élément ?" + }, + "permanentlyDeletedItem": { + "message": "Élément supprimé définitivement" + }, + "restoreItem": { + "message": "Restaurer l'élément" + }, + "restoreItemConfirmation": { + "message": "Êtes-vous sûr de vouloir restaurer cet élément ?" + }, + "restoredItem": { + "message": "Élément restauré" + }, + "permanentlyDelete": { + "message": "Supprimer définitivement" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "La déconnexion supprimera tous les accès à votre coffre et nécessite une authentification en ligne après la période d'expiration. Êtes-vous sûr de vouloir utiliser ce paramètre?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmation de l'action lors de l'expiration du délai" + }, + "enterpriseSingleSignOn": { + "message": "Portail de connexion unique d'entreprise" + }, + "setMasterPassword": { + "message": "Définir le mot de passe maître" + }, + "ssoCompleteRegistration": { + "message": "Afin de terminer la connexion avec SSO, veuillez définir un mot de passe maître pour accéder à votre coffre et le protéger." + }, + "newMasterPass": { + "message": "Nouveau mot de passe maître" + }, + "confirmNewMasterPass": { + "message": "Confirmer le nouveau mot de passe maître" + }, + "masterPasswordPolicyInEffect": { + "message": "Une ou plusieurs politiques de l'organisation exigent que votre mot de passe maître réponde aux exigences suivantes :" + }, + "policyInEffectMinComplexity": { + "message": "Score de complexité minimum de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Longueur minimale de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contenir une ou plusieurs majuscules" + }, + "policyInEffectLowercase": { + "message": "Contenir une ou plusieurs minuscules" + }, + "policyInEffectNumbers": { + "message": "Contenir un ou plusieurs chiffres" + }, + "policyInEffectSpecial": { + "message": "Contenir un ou plusieurs des caractères spéciaux suivants $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Votre nouveau mot de passe maître ne répond pas aux exigences de la politique." + }, + "acceptPolicies": { + "message": "En cochant cette case, vous acceptez les éléments suivants :" + }, + "acceptPoliciesError": { + "message": "Les conditions d'utilisation et la politique de confidentialité n'ont pas été acceptées." + }, + "enableBrowserIntegration": { + "message": "Activer l'intégration avec le navigateur" + }, + "enableBrowserIntegrationDesc": { + "message": "L'intégration avec le navigateur est utilisée pour le déverrouillage biométrique dans le navigateur." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Intégration avec le navigateur non supportée" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Malheureusement l'intégration avec le navigateur est uniquement supportée dans la version Mac App Store pour le moment." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Intégration avec le navigateur non supportée" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Malheureusement l'intégration avec le navigateur n'est pas supportée dans la version Windows Store pour le moment." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Exiger une vérification pour l'intégration avec le navigateur" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Activez une couche de sécurité supplémentaire en exigeant la validation de la phrase d'empreinte du compte lors de l'établissement d'un lien entre l'application et votre navigateur. Lorsque cette option est activée, cela nécessite une intervention et une vérification de l'utilisateur à chaque fois qu'une connexion est établie." + }, + "approve": { + "message": "Accepter" + }, + "verifyBrowserTitle": { + "message": "Vérifier la connexion au navigateur" + }, + "verifyBrowserDesc": { + "message": "Veuillez vous assurer que la phrase d'empreinte affichée est identique à celle affichée dans l'extension de navigateur." + }, + "biometricsNotEnabledTitle": { + "message": "Le déverrouillage biométrique n'est pas activé" + }, + "biometricsNotEnabledDesc": { + "message": "Les options de biométrie dans le navigateur nécessitent au préalable l'activation des options de biométrie dans l'application de bureau." + }, + "personalOwnershipSubmitError": { + "message": "En raison d'une politique d'entreprise, il vous est interdit d'enregistrer des éléments dans votre coffre personnel. Sélectionnez une organisation dans l'option Propriété et choisissez parmi les collections disponibles." + }, + "hintEqualsPassword": { + "message": "Votre indice de mot de passe ne peut pas être identique à votre nom d'utilisateur." + }, + "personalOwnershipPolicyInEffect": { + "message": "Une politique d'organisation affecte vos options de propriété." + }, + "allSends": { + "message": "Tous les Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fichier" + }, + "sendTypeText": { + "message": "Texte" + }, + "searchSends": { + "message": "Rechercher dans les Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Modifier le Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mon Coffre" + }, + "text": { + "message": "Texte" + }, + "deletionDate": { + "message": "Date de suppression" + }, + "deletionDateDesc": { + "message": "Le Send sera définitivement supprimé à la date et heure spécifiées.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Date d'expiration" + }, + "expirationDateDesc": { + "message": "Si défini, l'accès à ce Send expirera à la date et heure spécifiées.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Nombre maximum d'accès" + }, + "maxAccessCountDesc": { + "message": "Si défini, les utilisateurs ne seront plus en mesure d'accéder à ce Send une fois que le nombre maximum d'accès sera atteint.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Nombre d'accès actuel" + }, + "disableSend": { + "message": "Désactiver ce Send pour que personne ne puisse y accéder.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Vous pouvez, si vous le souhaitez, exiger un mot de passe pour accéder à ce Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Notes privées à propos de ce Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Lien du Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Lien du Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Lors de l'accès à ce Send, masquer le texte par défaut", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send créé", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send modifié", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send supprimé", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nouveau mot de passe" + }, + "whatTypeOfSend": { + "message": "De quel type de Send s'agit-il ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Créer un Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Le texte que vous voulez envoyer." + }, + "sendFileDesc": { + "message": "Le fichier que vous voulez envoyer." + }, + "days": { + "message": "$DAYS$ jours", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 jour" + }, + "custom": { + "message": "Personnalisé" + }, + "deleteSendConfirmation": { + "message": "Êtes-vous sûr de vouloir supprimer ce Send ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copier le lien du Send dans le presse-papier", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copier le lien de ce Send dans mon presse-papiers lors de l'enregistrement." + }, + "sendDisabled": { + "message": "Send désactivé", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "En raison d'une politique d'entreprise, vous ne pouvez que supprimer un Send existant.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copier le lien" + }, + "disabled": { + "message": "Désactivé" + }, + "maxAccessCountReached": { + "message": "Nombre maximum d'accès atteint" + }, + "expired": { + "message": "Expiré" + }, + "pendingDeletion": { + "message": "En attente de suppression" + }, + "webAuthnAuthenticate": { + "message": "Authentifier WebAuthn" + }, + "hideEmail": { + "message": "Cacher mon adresse e-mail aux destinataires." + }, + "sendOptionsPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation affectent vos options Send." + }, + "emailVerificationRequired": { + "message": "Vérification de l'adresse e-mail nécessaire" + }, + "emailVerificationRequiredDesc": { + "message": "Vous devez vérifier votre adresse e-mail pour utiliser cette fonctionnalité." + }, + "passwordPrompt": { + "message": "Ressaisie du mot de passe maître" + }, + "passwordConfirmation": { + "message": "Confirmation du mot de passe maître" + }, + "passwordConfirmationDesc": { + "message": "Cette action est protégée. Pour continuer, veuillez ressaisir votre mot de passe maître pour vérifier votre identité." + }, + "updatedMasterPassword": { + "message": "Mot de passe maître mis à jour" + }, + "updateMasterPassword": { + "message": "Mettre à jour le mot de passe maître" + }, + "updateMasterPasswordWarning": { + "message": "Votre mot de passe maître a récemment été modifié par un administrateur de votre organisation. Pour pouvoir accéder au coffre-fort, vous devez mettre à jour votre mot de passe maître maintenant. Poursuivre vous déconnectera de votre session actuelle, vous obligeant à vous reconnecter. Les sessions actives sur d'autres appareils peuvent rester actives jusqu'à une heure." + }, + "hours": { + "message": "Heures" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Les politiques de votre organisation affectent le délai d'expiration de votre coffre. Le délai d'expiration maximal autorisé est de $HOURS$ heure(s) et $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Le délai d'expiration de votre coffre-fort dépasse les restrictions définies par votre organisation." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscription automatique" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Cette organisation a une politique d'entreprise qui vous inscrira automatiquement à la réinitialisation du mot de passe. L'inscription permettra aux administrateurs de l'organisation de changer votre mot de passe maître." + }, + "vaultExportDisabled": { + "message": "Export du coffre désactivé" + }, + "personalVaultExportPolicyInEffect": { + "message": "Une ou plusieurs politiques d'organisation vous empêchent d'exporter votre coffre personnel." + }, + "addAccount": { + "message": "Ajouter un compte" + }, + "removeMasterPassword": { + "message": "Supprimer le mot de passe maître" + }, + "removedMasterPassword": { + "message": "Mot de passe maître supprimé." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ utilise SSO avec un serveur de clés auto-hébergé. Un mot de passe maître n'est plus nécessaire aux membres de cette organisation pour se connecter.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Quitter l'organisation" + }, + "leaveOrganizationConfirmation": { + "message": "Êtes-vous sûr de vouloir quitter cette organisation ?" + }, + "leftOrganization": { + "message": "Vous avez quitté l'organisation." + }, + "ssoKeyConnectorUnavailable": { + "message": "Impossible de contacter Key Connector, réessayez plus tard." + }, + "lockAllVaults": { + "message": "Verrouiller tous les coffres" + }, + "accountLimitReached": { + "message": "Vous ne pouvez pas connecter plus de 5 comptes en même temps." + }, + "accountPreferences": { + "message": "Préférences" + }, + "appPreferences": { + "message": "Paramètres de l'application (tous les comptes)" + }, + "accountSwitcherLimitReached": { + "message": "Limite de comptes atteinte. Déconnectez-vous d'un compte pour en ajouter un nouveau." + }, + "settingsTitle": { + "message": "Paramètres de l'application pour $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Changer de compte" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Votre session a expiré. Veuillez revenir en arrière et essayer de vous connecter à nouveau." + }, + "exportingPersonalVaultTitle": { + "message": "Export du coffre personnel" + }, + "exportingPersonalVaultDescription": { + "message": "Seuls les éléments du coffre personnel associé à l'adresse e-mail $EMAIL$ seront exportés. Les éléments du coffre de l'organisation ne seront pas inclus.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Générateur" + }, + "whatWouldYouLikeToGenerate": { + "message": "Que souhaitez-vous générer ?" + }, + "passwordType": { + "message": "Type de mot de passe" + }, + "regenerateUsername": { + "message": "Régénérer le nom d'utilisateur" + }, + "generateUsername": { + "message": "Générer le nom d'utilisateur" + }, + "usernameType": { + "message": "Type de nom d'utilisateur" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Utilisez les capacités de sous-adressage de votre fournisseur de courriel." + }, + "catchallEmail": { + "message": "Collecteur d'email" + }, + "catchallEmailDesc": { + "message": "Utilisez la boîte de réception du collecteur configurée de votre domaine." + }, + "random": { + "message": "Aléatoire" + }, + "randomWord": { + "message": "Mots aléatoire" + }, + "websiteName": { + "message": "Nom du site Web" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json new file mode 100644 index 0000000000..526344dd58 --- /dev/null +++ b/apps/desktop/src/locales/he/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "מסננים" + }, + "allItems": { + "message": "כל הפריטים" + }, + "favorites": { + "message": "מועדפים" + }, + "types": { + "message": "סוגים" + }, + "typeLogin": { + "message": "פרטי התחברות" + }, + "typeCard": { + "message": "כרטיס" + }, + "typeIdentity": { + "message": "זהות" + }, + "typeSecureNote": { + "message": "תזכורת מאובטחת" + }, + "folders": { + "message": "תיקיות" + }, + "collections": { + "message": "אוספים" + }, + "searchVault": { + "message": "חפש כספת" + }, + "addItem": { + "message": "הוסף פריט" + }, + "shared": { + "message": "משותף" + }, + "share": { + "message": "שתף" + }, + "moveToOrganization": { + "message": "העברה לארגון" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ הועבר ל־$ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "בחר ארגון שאליו ברצונך להעביר פריט זה. ההעברה לארגון מעבירה את הבעלות על הפריט לאותו ארגון. לאחר העברת פריט זה לא תוכל עוד לקבוע באופן ישיר הבעלות." + }, + "attachments": { + "message": "קבצים מצורפים" + }, + "viewItem": { + "message": "צפה בפריט" + }, + "name": { + "message": "שם" + }, + "uri": { + "message": "כתובת" + }, + "uriPosition": { + "message": "כתובת $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "כתובת חדשה" + }, + "username": { + "message": "שם משתמש" + }, + "password": { + "message": "סיסמה" + }, + "passphrase": { + "message": "משפט סיסמה" + }, + "editItem": { + "message": "ערוך פריט" + }, + "emailAddress": { + "message": "כתובת אימייל" + }, + "verificationCodeTotp": { + "message": "קוד אימות (TOTP)" + }, + "website": { + "message": "אתר" + }, + "notes": { + "message": "פתקים" + }, + "customFields": { + "message": "שדות מותאמים אישית" + }, + "launch": { + "message": "פתח" + }, + "copyValue": { + "message": "העתק ערך", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "מזעור בעת העתקה ללוח" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "מזער את החלון בזמן העתקה של מידע מפריט ללוח." + }, + "toggleVisibility": { + "message": "הצג או הסתר" + }, + "toggleCollapse": { + "message": "הצג או הסתר", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "שם בעל הכרטיס" + }, + "number": { + "message": "מספר" + }, + "brand": { + "message": "מותג" + }, + "expiration": { + "message": "תוקף" + }, + "securityCode": { + "message": "קוד אבטחה" + }, + "identityName": { + "message": "שם זהות" + }, + "company": { + "message": "חברה" + }, + "ssn": { + "message": "מספר ביטוח לאומי" + }, + "passportNumber": { + "message": "מספר דרכון" + }, + "licenseNumber": { + "message": "מספר רשיון" + }, + "email": { + "message": "אימייל" + }, + "phone": { + "message": "טלפון" + }, + "address": { + "message": "כתובת" + }, + "premiumRequired": { + "message": "נדרש חשבון פרימיום" + }, + "premiumRequiredDesc": { + "message": "בכדי להשתמש ביכולת זו יש צורך בחשבון פרמיום." + }, + "errorOccurred": { + "message": "אירעה שגיאה." + }, + "error": { + "message": "שגיאה" + }, + "january": { + "message": "ינואר" + }, + "february": { + "message": "פברואר" + }, + "march": { + "message": "מרץ" + }, + "april": { + "message": "אפריל" + }, + "may": { + "message": "מאי" + }, + "june": { + "message": "יוני" + }, + "july": { + "message": "יולי" + }, + "august": { + "message": "אוגוסט" + }, + "september": { + "message": "ספטמבר" + }, + "october": { + "message": "אוקטובר" + }, + "november": { + "message": "נובמבר" + }, + "december": { + "message": "דצמבר" + }, + "ex": { + "message": "לדוגמא", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "תואר" + }, + "mr": { + "message": "מר" + }, + "mrs": { + "message": "גברת" + }, + "ms": { + "message": "העלמה" + }, + "dr": { + "message": "דוקטור" + }, + "expirationMonth": { + "message": "תוקף אשראי - חודש" + }, + "expirationYear": { + "message": "תוקף אשראי - שנה" + }, + "select": { + "message": "בחר" + }, + "other": { + "message": "אחר" + }, + "generatePassword": { + "message": "צור סיסמה" + }, + "type": { + "message": "סוג" + }, + "firstName": { + "message": "שם פרטי" + }, + "middleName": { + "message": "שם אמצעי" + }, + "lastName": { + "message": "שם משפחה" + }, + "fullName": { + "message": "שם מלא" + }, + "address1": { + "message": "כתובת 1" + }, + "address2": { + "message": "כתובת 2" + }, + "address3": { + "message": "כתובת 3" + }, + "cityTown": { + "message": "עיר \\ יישוב" + }, + "stateProvince": { + "message": "מדינה \\ מחוז" + }, + "zipPostalCode": { + "message": "מיקוד" + }, + "country": { + "message": "מדינה" + }, + "save": { + "message": "שמור" + }, + "cancel": { + "message": "ביטול" + }, + "delete": { + "message": "מחק" + }, + "favorite": { + "message": "מועדף" + }, + "edit": { + "message": "ערוך" + }, + "authenticatorKeyTotp": { + "message": "מפתח אימות (TOTP)" + }, + "folder": { + "message": "תיקייה" + }, + "newCustomField": { + "message": "שדה מותאם אישית חדש" + }, + "value": { + "message": "ערך" + }, + "dragToSort": { + "message": "גרור כדי למיין" + }, + "cfTypeText": { + "message": "טקסט" + }, + "cfTypeHidden": { + "message": "מוסתר" + }, + "cfTypeBoolean": { + "message": "אמת או שקר" + }, + "cfTypeLinked": { + "message": "מקושר", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "ערך מקושר", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "הסר" + }, + "nameRequired": { + "message": "דרוש שם." + }, + "addedItem": { + "message": "פריט שהתווסף" + }, + "editedItem": { + "message": "פריט שנערך" + }, + "deleteItem": { + "message": "מחק פריט" + }, + "deleteFolder": { + "message": "מחק תיקייה" + }, + "deleteAttachment": { + "message": "מחק קובץ מצורף" + }, + "deleteItemConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק פריט זה?" + }, + "deletedItem": { + "message": "פריט נשלח לסל המחזור" + }, + "overwritePasswordConfirmation": { + "message": "האם אתה בטוח שברצונך לדרוס את הסיסמה הנוכחית?" + }, + "overwriteUsername": { + "message": "כתוב מחדש את שם המשתמש" + }, + "overwriteUsernameConfirmation": { + "message": "האם אתה בטוח שברצונך לדרוס את שם המשתמש הנוכחי?" + }, + "noneFolder": { + "message": "ללא תיקיה", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "הוסף תיקיה" + }, + "editFolder": { + "message": "ערוך תיקייה" + }, + "regeneratePassword": { + "message": "צור סיסמה חדשה" + }, + "copyPassword": { + "message": "העתק סיסמה" + }, + "copyUri": { + "message": "העתק שורת כתובת" + }, + "copyVerificationCodeTotp": { + "message": "העתקת קוד אימות (TOTP)" + }, + "length": { + "message": "אורך" + }, + "numWords": { + "message": "מספר מילים" + }, + "wordSeparator": { + "message": "מפריד מילים" + }, + "capitalize": { + "message": "הפוך אותיות ראשונות לגדולות", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "כלול מספרים" + }, + "close": { + "message": "סגור" + }, + "minNumbers": { + "message": "מינימום ספרות" + }, + "minSpecial": { + "message": "מינימום תווים מיוחדים", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "המנע מאותיות ותווים דומים" + }, + "searchCollection": { + "message": "חפש אוסף" + }, + "searchFolder": { + "message": "חפש תיקייה" + }, + "searchFavorites": { + "message": "חפש מועדפים" + }, + "searchType": { + "message": "חפש סוג", + "description": "Search item type" + }, + "newAttachment": { + "message": "צרף קובץ חדש" + }, + "deletedAttachment": { + "message": "קובץ מצורף שנמחק" + }, + "deleteAttachmentConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק קובץ מצורף זה?" + }, + "attachmentSaved": { + "message": "הקובץ המצורף נשמר." + }, + "file": { + "message": "קובץ" + }, + "selectFile": { + "message": "בחירת קובץ." + }, + "maxFileSize": { + "message": "גודל הקובץ המירבי הוא 500 מגה." + }, + "updateKey": { + "message": "לא ניתן להשתמש ביכולת זו עד שתעדכן את מפתח ההצפנה שלך." + }, + "editedFolder": { + "message": "תיקיה שנערכה" + }, + "addedFolder": { + "message": "תיקיה שנוספה" + }, + "deleteFolderConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק את התיקייה?" + }, + "deletedFolder": { + "message": "תיקיה שנמחקה" + }, + "loginOrCreateNewAccount": { + "message": "היכנס או צור חשבון חדש כדי לגשת לכספת המאובטחת שלך." + }, + "createAccount": { + "message": "צור חשבון" + }, + "logIn": { + "message": "התחבר" + }, + "submit": { + "message": "שלח" + }, + "masterPass": { + "message": "סיסמה ראשית" + }, + "masterPassDesc": { + "message": "הסיסמה הראשית היא הסיסמה שבאמצעותה תיגש לכספת שלך. חשוב מאוד שלא תשכח את הסיסמה הזו. אין שום דרך לשחזר אותה במקרה ושכחת אותה." + }, + "masterPassHintDesc": { + "message": "ניתן להשתמש ברמז לסיסמה הראשית אם שכחת אותה." + }, + "reTypeMasterPass": { + "message": "הקלד שוב סיסמה ראשית" + }, + "masterPassHint": { + "message": "רמז לסיסמה ראשית (אופציונאלי)" + }, + "settings": { + "message": "הגדרות" + }, + "passwordHint": { + "message": "רמז לסיסמה" + }, + "enterEmailToGetHint": { + "message": "הכנס את כתובת האימייל שלך לקבלת רמז עבור הסיסמה הראשית." + }, + "getMasterPasswordHint": { + "message": "הצג את הרמז לסיסמה הראשית" + }, + "emailRequired": { + "message": "נדרשת כתובת אימייל." + }, + "invalidEmail": { + "message": "כתובת אימייל לא תקינה." + }, + "masterPassRequired": { + "message": "יש להזין את הסיסמה הראשית." + }, + "masterPassLength": { + "message": "הסיסמה הראשית חייבת להיות לפחות באורך 8 תווים." + }, + "masterPassDoesntMatch": { + "message": "אימות סיסמה ראשית אינו תואם." + }, + "newAccountCreated": { + "message": "החשבון החדש שלך נוצר בהצלחה! כעת ניתן להתחבר למערכת." + }, + "masterPassSent": { + "message": "שלחנו לך אימייל עם רמז לסיסמה הראשית." + }, + "unexpectedError": { + "message": "אירעה שגיאה לא צפויה." + }, + "itemInformation": { + "message": "מידע על הפריט" + }, + "noItemsInList": { + "message": "אין פריטים להצגה ברשימה." + }, + "sendVerificationCode": { + "message": "שליחת קוד אימות לדוא״ל שלך" + }, + "sendCode": { + "message": "שליחת קוד" + }, + "codeSent": { + "message": "קוד נשלח" + }, + "verificationCode": { + "message": "קוד אימות" + }, + "confirmIdentity": { + "message": "יש לאשר את זהותך כדי להמשיך." + }, + "verificationCodeRequired": { + "message": "נדרש קוד אימות." + }, + "invalidVerificationCode": { + "message": "קוד אימות שגוי" + }, + "continue": { + "message": "המשך" + }, + "enterVerificationCodeApp": { + "message": "הכנס את קוד האימות בן 6 הספרות מאפליקציית האימות שלך." + }, + "enterVerificationCodeEmail": { + "message": "הכנס את קוד האימות בן 6 הספרות שנשלח ל-$EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "מייל אימות נשלח לכתובת $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "זכור אותי" + }, + "sendVerificationCodeEmailAgain": { + "message": "שלח שוב קוד אימות לאימייל" + }, + "useAnotherTwoStepMethod": { + "message": "השתמש בשיטה אחרת עבור כניסה דו שלבית" + }, + "insertYubiKey": { + "message": "הכנס את ה-YubiKey אל כניסת ה-USB במחשבך, ואז גע בכפתור שלו." + }, + "insertU2f": { + "message": "הכנס את מפתח האבטחה שלך אל כניסת ה-USB במחשבך. אם יש לו כפתור, גע בו." + }, + "recoveryCodeDesc": { + "message": "איבדת גישה לכל ספקי האימות הדו-שלבי שלך? השתמש בקוד האימות כדי לבטל את הספקים הקיימים מתוך החשבון שלך." + }, + "recoveryCodeTitle": { + "message": "קוד שחזור" + }, + "authenticatorAppTitle": { + "message": "אפליקציית אימות" + }, + "authenticatorAppDesc": { + "message": "השתמש באפליקצית אימות (כמו לדוגמא Authy או Google Authenticator) לייצור סיסמאות אימות מבוססות זמן.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "מפתח אבטחה OTP של YubiKey" + }, + "yubiKeyDesc": { + "message": "השתמש בYubiKey עבור גישה לחשבון שלך. עובד עם YubiKey בגירסאות 4, 4C, 4Nano, ומכשירי NEO." + }, + "duoDesc": { + "message": "בצע אימות מול Duo Security באמצעות אפליקצית Duo לפלאפון, SMS, שיחת טלפון, או מפתח אבטחה U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "בצע אימות מול Duo Security עבור הארגון שלך באמצעות אפליקצית Duo לפלאפון, SMS, שיחת טלפון, או מפתח אבטחה U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "השתמש בכל מפתח אבטחה המותאם ל- WebAuthn כדי לגשת לחשבונך." + }, + "emailTitle": { + "message": "אימייל" + }, + "emailDesc": { + "message": "קודים לאימות יישלחו אליך באימייל." + }, + "loginUnavailable": { + "message": "פרטי כניסה לא זמינים" + }, + "noTwoStepProviders": { + "message": "כניסה דו-שלבית פעילה בחשבון זה, אך אף אחד מספקי הכניסה הדו-שלבית לא נתמכים במכשיר זה." + }, + "noTwoStepProviders2": { + "message": "אנא הוסף ספקים אחרים שיש להם תמיכה במכשירים נוספים (לדוגמא - אפליקציית אימות)." + }, + "twoStepOptions": { + "message": "אפשרויות כניסה דו שלבית" + }, + "selfHostedEnvironment": { + "message": "סביבה על שרתים מקומיים" + }, + "selfHostedEnvironmentFooter": { + "message": "הזן את כתובת השרת המקומי של Bitwarden." + }, + "customEnvironment": { + "message": "סביבה מותאמת אישית" + }, + "customEnvironmentFooter": { + "message": "למשתמשים מתקדמים. באפשרותך לציין את כתובת השרת עבור כל שירות בנפרד." + }, + "baseUrl": { + "message": "כתובת שרת" + }, + "apiUrl": { + "message": "כתובת שרת הAPI" + }, + "webVaultUrl": { + "message": "כתובת שרת הכספת" + }, + "identityUrl": { + "message": "כתובת שרת הזהות" + }, + "notificationsUrl": { + "message": "כתובת שרת הודעות" + }, + "iconsUrl": { + "message": "כתובת שרת אייקונים" + }, + "environmentSaved": { + "message": "כתובות הסביבה נשמרו." + }, + "ok": { + "message": "אישור" + }, + "yes": { + "message": "כן" + }, + "no": { + "message": "לא" + }, + "overwritePassword": { + "message": "דרוס סיסמה" + }, + "learnMore": { + "message": "למידע נוסף" + }, + "featureUnavailable": { + "message": "יכולת זו לא זמינה" + }, + "loggedOut": { + "message": "בוצעה יציאה" + }, + "loginExpired": { + "message": "תוקף החיבור שלך הסתיים." + }, + "logOutConfirmation": { + "message": "האם אתה בטוח שברצונך להתנתק?" + }, + "logOut": { + "message": "התנתק" + }, + "addNewLogin": { + "message": "הוסף פרטי כניסה חדשה" + }, + "addNewItem": { + "message": "הוספת פריט חדש" + }, + "addNewFolder": { + "message": "הוספת תיקייה חדשה" + }, + "view": { + "message": "הצג" + }, + "account": { + "message": "חשבון" + }, + "loading": { + "message": "טוען..." + }, + "lockVault": { + "message": "נעילת כספת" + }, + "passwordGenerator": { + "message": "יוצר הסיסמאות" + }, + "contactUs": { + "message": "יצירת קשר אתנו" + }, + "getHelp": { + "message": "קבלת עזרה" + }, + "fileBugReport": { + "message": "דווח על באג" + }, + "blog": { + "message": "בלוג" + }, + "followUs": { + "message": "עקוב אחרינו" + }, + "syncVault": { + "message": "סנכרן כספת" + }, + "changeMasterPass": { + "message": "החלף סיסמה ראשית" + }, + "changeMasterPasswordConfirmation": { + "message": "באפשרותך לשנות את הסיסמה הראשית שלך דרך הכספת באתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "fingerprintPhrase": { + "message": "סיסמת טביעת אצבע", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "הסיסמה של טביעת האצבעות בחשבון שלך", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "עבור לכספת באתר" + }, + "getMobileApp": { + "message": "הורד את האפליקציה לפלאפון" + }, + "getBrowserExtension": { + "message": "הורד תוסף לדפדפן" + }, + "syncingComplete": { + "message": "הסינכרון הושלם" + }, + "syncingFailed": { + "message": "הסינכרון נכשל" + }, + "yourVaultIsLocked": { + "message": "הכספת שלך נעולה. הזן את הסיסמה הראשית שלך כדי להמשיך." + }, + "unlock": { + "message": "בטל נעילה" + }, + "loggedInAsOn": { + "message": "מחובר כ $EMAIL$ באתר $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "סיסמה ראשית שגויה" + }, + "twoStepLoginConfirmation": { + "message": "התחברות בשני-שלבים הופכת את החשבון שלך למאובטח יותר בכך שאתה נדרש לוודא בכל כניסה בעזרת מכשיר אחר כדוגמת מפתח אבטחה, תוכנת אימות, SMS, שיחת טלפון, או אימייל. ניתן להפעיל את \"התחברות בשני-שלבים\" בכספת שבאתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "twoStepLogin": { + "message": "התחברות בשני-שלבים" + }, + "vaultTimeout": { + "message": "משך זמן מירבי עבור חיבור לכספת" + }, + "vaultTimeoutDesc": { + "message": "בחר כמה זמן יעבור כדי שהכספת תסגר לאחר חוסר פעילות ותבצע את הפעולה שנבחרה." + }, + "immediately": { + "message": "באופן מיידי" + }, + "tenSeconds": { + "message": "10 שניות" + }, + "twentySeconds": { + "message": "20 שניות" + }, + "thirtySeconds": { + "message": "30 שניות" + }, + "oneMinute": { + "message": "דקה אחת" + }, + "twoMinutes": { + "message": "2 דקות" + }, + "fiveMinutes": { + "message": "5 דקות" + }, + "fifteenMinutes": { + "message": "15 דקות" + }, + "thirtyMinutes": { + "message": "30 דקות" + }, + "oneHour": { + "message": "שעה אחת" + }, + "fourHours": { + "message": "4 שעות" + }, + "onIdle": { + "message": "כשהמערכת מזהה חוסר פעילות" + }, + "onSleep": { + "message": "כשהמערכת נכנסת למצב שינה" + }, + "onLocked": { + "message": "בזמן נעילת המערכת" + }, + "onRestart": { + "message": "בהפעלה מחדש" + }, + "never": { + "message": "לעולם לא" + }, + "security": { + "message": "אבטחה" + }, + "clearClipboard": { + "message": "נקה לוח העתקות", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "נקה אוטומטית ערכים שהועתקו ללוח ההעתקות (clipboard).", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "בטל אייקונים של האתר" + }, + "disableFaviconDesc": { + "message": "יכולת הצג אייקונים-של-האתר מאפשרת הצגה של תמונה או אייקון מוכר ליד פרטי הכניסה שבכספת שלך." + }, + "enableMinToTray": { + "message": "מזער למגש המערכת" + }, + "enableMinToTrayDesc": { + "message": "בלחיצה על מזעור החלון, יופיע אייקון במגש המערכת (לרוב, ליד השעון)." + }, + "enableMinToMenuBar": { + "message": "מזער למגש המערכת" + }, + "enableMinToMenuBarDesc": { + "message": "במזעור חלון, הצג סמל במגש המערכת." + }, + "enableCloseToTray": { + "message": "סגור למגש המערכת" + }, + "enableCloseToTrayDesc": { + "message": "בלחיצה על סגירת החלון, יופיע אייקון במגש המערכת (לרוב, ליד השעון)." + }, + "enableCloseToMenuBar": { + "message": "סגור למגש המערכת" + }, + "enableCloseToMenuBarDesc": { + "message": "בעת סגירת חלון, הצג סמל במגש המערכת." + }, + "enableTray": { + "message": "אפשר אייקון במגש המערכת" + }, + "enableTrayDesc": { + "message": "הצג תמיד אייקון במגש המערכת." + }, + "startToTray": { + "message": "התחל עם אייקון במגש המערכת" + }, + "startToTrayDesc": { + "message": "בהפעלה הראשונה של האפליקציה, הצג אייקון במגש המערכת (מבלי לפתוח את החלון הראשי)." + }, + "startToMenuBar": { + "message": "הפעל במגש המערכת" + }, + "startToMenuBarDesc": { + "message": "בהפעלה הראשונה של האפליקציה, הצג סמל במגש המערכת." + }, + "openAtLogin": { + "message": "הפעלה אוטומטית באתחול המערכת" + }, + "openAtLoginDesc": { + "message": "התחל באופן אוטומטי את אפליקציית שולחן העבודה של Bitwarden בהתחברות." + }, + "alwaysShowDock": { + "message": "הצג תמיד ב-Dock" + }, + "alwaysShowDockDesc": { + "message": "הצג את הסמל של Bitwarden ב-Dock גם כשהתוכנה ממוזערת במגש המערכת." + }, + "confirmTrayTitle": { + "message": "אשר השבתת מגש המערכת" + }, + "confirmTrayDesc": { + "message": "השבתת הגדרה זו תשבית גם את כל ההגדרות האחרות הקשורות למגש." + }, + "language": { + "message": "שפה" + }, + "languageDesc": { + "message": "שנה את שפת האפליקציה. יש להפעיל מחדש את האפליקציה להחלת השינויים." + }, + "theme": { + "message": "ערכת נושא" + }, + "themeDesc": { + "message": "שנה את ערכת הצבע של האפליקציה." + }, + "dark": { + "message": "כהה", + "description": "Dark color" + }, + "light": { + "message": "בהיר", + "description": "Light color" + }, + "copy": { + "message": "העתק", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "חפש עדכונים" + }, + "version": { + "message": "גירסה $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "הפעל מחדש כדי לעדכן" + }, + "restartToUpdateDesc": { + "message": "גירסה מספר $VERSION_NUM$ מוכנה להתקנה. יש להפעיל מחדש את התוכנה כדי להשלים את ההתקנה. האם ברצונך להפעיל מחדש ולעדכן כעת?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "עדכון זמין" + }, + "updateAvailableDesc": { + "message": "עדכון חדש נמצא. האם ברצונך להורידו כעת?" + }, + "restart": { + "message": "הפעל מחדש" + }, + "later": { + "message": "מאוחר יותר" + }, + "noUpdatesAvailable": { + "message": "אין עדכונים חדשים זמינים כעת. הינך משתמש בגירסה האחרונה." + }, + "updateError": { + "message": "שגיאת עדכון" + }, + "unknown": { + "message": "לא ידועה" + }, + "copyUsername": { + "message": "העתק שם משתמש" + }, + "copyNumber": { + "message": "העתק מספר", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "העתק קוד אבטחה", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "חשבון פרימיום" + }, + "premiumManage": { + "message": "נהל חשבון" + }, + "premiumManageAlert": { + "message": "באפשרותך לנהל את החשבון שלך דרך הכספת באתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "premiumRefresh": { + "message": "רענן פרטי חשבון" + }, + "premiumNotCurrentMember": { + "message": "חשבונך אינו חשבון פרמיום כרגע." + }, + "premiumSignUpAndGet": { + "message": "צור חשבון פרמיום לשנה, וקבל:" + }, + "premiumSignUpStorage": { + "message": "1 ג'יגה של מקום אחסון מוצפן עבור קבצים מצורפים." + }, + "premiumSignUpTwoStep": { + "message": "אפשרויות כניסה דו שלבית מתקדמות כמו YubiKey, FIDO U2F, וDuo." + }, + "premiumSignUpReports": { + "message": "היגיינת סיסמאות, מצב בריאות החשבון, ודיווחים מעודכנים על פרצות חדשות בכדי לשמור על הכספת שלך בטוחה." + }, + "premiumSignUpTotp": { + "message": "מייצר קודי אימות TOTP עבור כניסות דו-שלביות (2FA) בכספת שלך." + }, + "premiumSignUpSupport": { + "message": "קדימות בתמיכה הטכנית." + }, + "premiumSignUpFuture": { + "message": "כל יכולות הפרימיום העתידיות שנפתח. עוד יכולות מגיעות בקרוב!" + }, + "premiumPurchase": { + "message": "רכוש פרימיום" + }, + "premiumPurchaseAlert": { + "message": "באפשרותך לרכוש מנוי פרימיום בכספת באתר bitwarden.com. האם ברצונך לפתוח את האתר כעת?" + }, + "premiumCurrentMember": { + "message": "אתה מנוי פרימיום!" + }, + "premiumCurrentMemberThanks": { + "message": "תודה על תמיכתך בBitwarden." + }, + "premiumPrice": { + "message": "הכל רק ב-$PRICE$ לשנה!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "הרענון הושלם" + }, + "passwordHistory": { + "message": "היסטוריית סיסמאות" + }, + "clear": { + "message": "נקה", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "אין סיסמאות להצגה ברשימה." + }, + "undo": { + "message": "בטל" + }, + "redo": { + "message": "בצע שוב" + }, + "cut": { + "message": "גזור", + "description": "Cut to clipboard" + }, + "paste": { + "message": "הדבק", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "בחר הכל" + }, + "zoomIn": { + "message": "הגדל" + }, + "zoomOut": { + "message": "הקטן" + }, + "resetZoom": { + "message": "איפוס זום" + }, + "toggleFullScreen": { + "message": "הפעל/הפסק מצב מסך מלא" + }, + "reload": { + "message": "רענן" + }, + "toggleDevTools": { + "message": "הצג/הסתר כלי פיתוח" + }, + "minimize": { + "message": "מזער", + "description": "Minimize window" + }, + "zoom": { + "message": "זום" + }, + "bringAllToFront": { + "message": "העבר קדימה", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "אודות Bitwarden" + }, + "services": { + "message": "שירותים" + }, + "hideBitwarden": { + "message": "הסתר את Bitwarden" + }, + "hideOthers": { + "message": "הסתר אחרים" + }, + "showAll": { + "message": "הצג הכל" + }, + "quitBitwarden": { + "message": "צא מBitwarden" + }, + "valueCopied": { + "message": "$VALUE$ הועתק", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "עזרה" + }, + "window": { + "message": "חלון" + }, + "checkPassword": { + "message": "בדוק אם הסיסמה נחשפה." + }, + "passwordExposed": { + "message": "הסיסמה הזו נחשפה $VALUE$ פעמים בפריצות אבטחה. כדאי לשנות אותה.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "הסיסמה לא נמצאה בפריצות אבטחה ידועות. היא בטוחה לשימוש." + }, + "baseDomain": { + "message": "שם בסיס הדומיין", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "שם דומיין", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "שרת", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "מדויק" + }, + "startsWith": { + "message": "מתחיל עם" + }, + "regEx": { + "message": "ביטוי רגולרי", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "זיהוי התאמה", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "ברירת מחדל לזיהוי התאמות", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "הצגה\\הסתרה של אפשרויות" + }, + "organization": { + "message": "ארגון", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "ברירת מחדל" + }, + "exit": { + "message": "יציאה" + }, + "showHide": { + "message": "הצג\\הסתר", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "הסתר למגש המערכת" + }, + "alwaysOnTop": { + "message": "תמיד מעל כל החלונות", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "עודכן", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "הסיסמה עודכנה", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "יצוא כספת" + }, + "fileFormat": { + "message": "פורמט קובץ" + }, + "warning": { + "message": "אזהרה", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "אשר ייצוא הכספת" + }, + "exportWarningDesc": { + "message": "הקובץ מכיל את פרטי הכספת שלך בפורמט לא מוצפן. מומלץ להעביר את הקובץ רק בדרכים מוצפנות, ומאוד לא מומלץ לשמור או לשלוח את הקובץ הזה בדרכים לא מוצפנות (כדוגמת סתם אימייל). מחק את הקובץ מיד לאחר שסיימת את השימוש בו." + }, + "encExportKeyWarningDesc": { + "message": "ייצוא זה מצפין את הנתונים שלך באמצעות מפתח ההצפנה של חשבונך. אם אי פעם תחדש את מפתח ההצפנה עבור חשבונך, יהיה עליך לייצא שוב מכיוון שלא תוכל לפענח מקובץ ייצוא זה." + }, + "encExportAccountWarningDesc": { + "message": "מפתחות הצפנת חשבון ייחודיים לכל חשבון משתמש של Bitwarden, כך שלא ניתן לייבא ייצוא מוצפן לחשבון אחר." + }, + "noOrganizationsList": { + "message": "אינך משויך לארגון. ניתן לשתף באופן מאובטח פריטים רק עם משתמשים אחרים בתוך ארגון." + }, + "noCollectionsInList": { + "message": "אין אוספים להצגה ברשימה." + }, + "ownership": { + "message": "בעלות" + }, + "whoOwnsThisItem": { + "message": "מי הבעלים של פריט הזה?" + }, + "strong": { + "message": "חזקה", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "טובה", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "חלשה", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "סיסמה ראשית חלשה" + }, + "weakMasterPasswordDesc": { + "message": "הסיסמה הראשית שבחרת חלשה מאוד. עליך לבחור סיסמה חזקה יותר (או להשתמש במשפט במקום מילה אחת) בכדי לאבטח את החשבון שלך. האם אתה בטוח שברצונך להשתמש בסיסמה ראשית זו?" + }, + "pin": { + "message": "קוד PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "בטל נעילה עם קוד PIN" + }, + "setYourPinCode": { + "message": "קבע קוד PIN לביטול נעילת Bitwarden. הגדרות הPIN יאופסו אם תבצע יציאה מהתוכנה." + }, + "pinRequired": { + "message": "נדרש קוד PIN." + }, + "invalidPin": { + "message": "קוד PIN לא תקין." + }, + "unlockWithWindowsHello": { + "message": "שחרור נעילה עם Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "אימות עבור Bitwarden." + }, + "unlockWithTouchId": { + "message": "שחרור נעילה עם Touch ID" + }, + "touchIdConsentMessage": { + "message": "פתח את הכספת שלך" + }, + "noAutoPromptWindowsHello": { + "message": "אל תבקש גישה ל- Windows Hello בעת ההפעלה." + }, + "noAutoPromptTouchId": { + "message": "אל תבקש גישה ל-Touch ID בעת ההפעלה." + }, + "lockWithMasterPassOnRestart": { + "message": "נעל בעזרת הסיסמה הראשית בהפעלה מחדש" + }, + "preferences": { + "message": "העדפות" + }, + "enableMenuBar": { + "message": "אפשר אייקון בתפריט" + }, + "enableMenuBarDesc": { + "message": "הצג תמיד אייקון בתפריט." + }, + "hideToMenuBar": { + "message": "הסתר לתפריט" + }, + "selectOneCollection": { + "message": "עליך לבחור לפחות אוסף אחד." + }, + "premiumUpdated": { + "message": "שדרגת לפרימיום." + }, + "restore": { + "message": "שחזור" + }, + "premiumManageAlertAppStore": { + "message": "ניתן לנהל את המינוי שלך דרך ה־App Store. האם ברצונך לבקר ב־App Store כעת?" + }, + "legal": { + "message": "משפטי", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "תנאי שירות" + }, + "privacyPolicy": { + "message": "מדיניות הפרטיות" + }, + "unsavedChangesConfirmation": { + "message": "האם אתה בטוח שברצונך לצאת? אם תצא כעת המידע הנוכחי לא ישמר." + }, + "unsavedChangesTitle": { + "message": "שינויים שלא נשמרו" + }, + "clone": { + "message": "שכפול" + }, + "passwordGeneratorPolicyInEffect": { + "message": "מדיניות ארגונית אחת או יותר משפיעה על הגדרות המחולל שלך." + }, + "vaultTimeoutAction": { + "message": "פעולה לביצוע בכספת בתום זמן החיבור" + }, + "vaultTimeoutActionLockDesc": { + "message": "כספת נעולה דורשת שתזין את הסיסמה הראשית בכדי לגשת לפרטים שבתוכה." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "בכדי לקבל גישה לכספת שיצאו ממנה, יש לבצע אימות מחדש." + }, + "lock": { + "message": "נעילה", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "סל המחזור", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "חפש בסל המחזור" + }, + "permanentlyDeleteItem": { + "message": "מחק לצמיתות פריט שנבחר" + }, + "permanentlyDeleteItemConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק את הפריט הזה לצמיתות?" + }, + "permanentlyDeletedItem": { + "message": "פריט שנמחק לצמיתות" + }, + "restoreItem": { + "message": "שחזר פריט" + }, + "restoreItemConfirmation": { + "message": "האם אתה בטוח שברצונך לשחזר פריט זה?" + }, + "restoredItem": { + "message": "פריט ששוחזר" + }, + "permanentlyDelete": { + "message": "מחק לצמיתות" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "יציאה תגרום להסרת כל גישה שיש לך לכספת ודורשת אימות אונליין לאחר משך זמן מסויים. האם אתה בטוח שברצונך להשתמש באפשרות זו?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "אישור פעולת אימות לאחר חוסר פעילות" + }, + "enterpriseSingleSignOn": { + "message": "כניסה אחודה ארגונית" + }, + "setMasterPassword": { + "message": "הגדרת סיסמה ראשית" + }, + "ssoCompleteRegistration": { + "message": "כדי להשלים את הכניסה עם SSO, נא להגדיר סיסמה ראשית כדי לגשת ולהגן על הכספת שלך." + }, + "newMasterPass": { + "message": "סיסמה ראשית חדשה" + }, + "confirmNewMasterPass": { + "message": "אימות סיסמה ראשית חדשה" + }, + "masterPasswordPolicyInEffect": { + "message": "אחד או יותר מאילוצי המדיניות של הארגון דורשים שהסיסמה הראשית שלך תעמוד בדרישות הבאות:" + }, + "policyInEffectMinComplexity": { + "message": "ניקוד מורכבות הסיסמה צריך להיות לפחות {0}", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "אורך מינימלי של $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "מכילה אות גדולה אחת או יותר" + }, + "policyInEffectLowercase": { + "message": "מכילה אות קטנה אחת או יותר" + }, + "policyInEffectNumbers": { + "message": "מכילה ספרה אחת או יותר" + }, + "policyInEffectSpecial": { + "message": "מכילה תו אחד או יותר מהתווים הבאים: {0}", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "הסיסמה הראשית החדשה השלך לא עומדת בדרישות המדיניות." + }, + "acceptPolicies": { + "message": "סימון תיבה זו מהווה את הסכמתך לתנאים הבאים:" + }, + "acceptPoliciesError": { + "message": "לא הסכמת לתנאי השירות ומדיניות הפרטיות." + }, + "enableBrowserIntegration": { + "message": "אפשר אינטגרציה עם הדפדפן" + }, + "enableBrowserIntegrationDesc": { + "message": "אינטגרצייה עם הדפדפן מאפשרת שימוש באמצעיים ביומטריים בדפדפן." + }, + "browserIntegrationMasOnlyTitle": { + "message": "אינטגרצייה עם הדפדפן אינה נמתכמת" + }, + "browserIntegrationMasOnlyDesc": { + "message": "למצער, אינטגרצייה עם הדפדפן בשלב זה נתמכת רק על ידי גרסת חנות האפליקציות של מקינטוש." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "אינטגרצייה עם הדפדפן אינה נמתכמת" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "למרבה הצער שילוב הדפדפן אינו נתמך כרגע בגרסת ה-Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "דרוש אימות לצורך שילוב הדפדפן" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "הפעל שכבת אבטחה נוספת באמצעות בקשת אימות טביעות אצבע בעת יצירת קישור בין שולחן העבודה לדפדפן. כשהוא מופעל, זה דורש התערבות ואימות משתמש בכל פעם שנוצר חיבור." + }, + "approve": { + "message": "לְאַשֵׁר" + }, + "verifyBrowserTitle": { + "message": "אמת את חיבור הדפדפן" + }, + "verifyBrowserDesc": { + "message": "בבקשה, וודא כי חתימת האצבע הדיגיטלית המוצגת זהה לחתימה שמופיע בתוסף הדפדפן." + }, + "biometricsNotEnabledTitle": { + "message": "לא הופעלו אמצעי זיהוי ביומטריים" + }, + "biometricsNotEnabledDesc": { + "message": "בכדי להשתמש באמצעי אימות ביומטריים בדפדפן, אפשר תכונה זו באפליקציה בשולחן העבודה." + }, + "personalOwnershipSubmitError": { + "message": "בשל מדיניות ארגונית, אתה מוגבל לשמירת פריטים בכספת האישית שלך. שנה את ההגדרות בעלות החשבון לחשבון ארגוני ובחר מתוך האוספים הזמינים." + }, + "hintEqualsPassword": { + "message": "הרמז לסיסמה לא יכול להיות זהה לסיסמה." + }, + "personalOwnershipPolicyInEffect": { + "message": "מדיניות ארגון מסויימת משפיעה על אפשרויות הבעלות." + }, + "allSends": { + "message": "כל השליחות", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "קובץ" + }, + "sendTypeText": { + "message": "טקסט" + }, + "searchSends": { + "message": "חיפוש שליחויות", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "ערוך Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "הכספת שלי" + }, + "text": { + "message": "טקסט" + }, + "deletionDate": { + "message": "תאריך מחיקה" + }, + "deletionDateDesc": { + "message": "המשלוח יימחק לצמיתות בתאריך ובשעה שצוינו.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "תאריך תפוגה" + }, + "expirationDateDesc": { + "message": "במדה והגדרת זמן, הגישה לשליחה זו תושבת בתאריך ובשעה שהוגדרו.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "מונה גישה מרבי" + }, + "maxAccessCountDesc": { + "message": "אם תגדיר, משתמשים כבר לא יוכלו לגשת לשליחה זו לאחר שמספר הגישות המרבי יושג.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "מונה גישה נוכחית" + }, + "disableSend": { + "message": "השבת את השליחה הזאת ואל תאפשר גישה אליה.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "לחלופין, דרוש סיסמה לכל המשתמשים כדי לגשת לשליחה זאת.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "הערות אישיות אודות השליחה הזאת.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "שלח קישור", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "שלח קישור", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "בעת גישה לשליחה, הסתר את הטקסט בברירת מחדל", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "ה-Send נוצר", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "שליחה שנערכה", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "השליחה נמחקה", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "סיסמה חדשה" + }, + "whatTypeOfSend": { + "message": "איזה סוג של שליחה הוא זה?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "צור Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "הטקסט שברצונך לשלוח." + }, + "sendFileDesc": { + "message": "הקובץ שברצונך לשלוח." + }, + "days": { + "message": "$DAYS$ יום/ימים", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "יום 1" + }, + "custom": { + "message": "מותאם אישית" + }, + "deleteSendConfirmation": { + "message": "האם אתה בטוח שברצונך למחוק את המשלוח הזה?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "העתק את קישור ה-Send ללוח", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "בשמירה העתק את הקישור ללוח כדי לשתף את ה-Send." + }, + "sendDisabled": { + "message": "ה-Send הושבת", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "בשל מדיניות החברה, אתה יכול למחוק רק משלוח קיים.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "העתק קישור" + }, + "disabled": { + "message": "מושבת" + }, + "maxAccessCountReached": { + "message": "מספר הגישות המרבי הושג" + }, + "expired": { + "message": "פג תוקף" + }, + "pendingDeletion": { + "message": "ממתין להסרה" + }, + "webAuthnAuthenticate": { + "message": "אמת WebAutn" + }, + "hideEmail": { + "message": "הסתר את כתובת הדואר האלקטרוני שלי מהנמענים." + }, + "sendOptionsPolicyInEffect": { + "message": "מדיניות ארגון אחת או יותר משפיעה על אפשרויות השליחה שלך." + }, + "emailVerificationRequired": { + "message": "נדרש כתובת אימייל לאימות" + }, + "emailVerificationRequiredDesc": { + "message": "נדרש אישור אימות בדוא\"ל כדי לאפשר שימוש בתכונה זו." + }, + "passwordPrompt": { + "message": "בקשת חוזרת של סיסמת ראשית" + }, + "passwordConfirmation": { + "message": "אישור סיסמא ראשי" + }, + "passwordConfirmationDesc": { + "message": "פעולה זו מוגנת. כדי להמשיך, הזן מחדש את הסיסמה הראשית שלך כדי לאמת את זהותך." + }, + "updatedMasterPassword": { + "message": "סיסמה ראשית עודכנה" + }, + "updateMasterPassword": { + "message": "עדכון סיסמה ראשית" + }, + "updateMasterPasswordWarning": { + "message": "הסיסמה הראשית שלך שונתה לאחרונה על ידי מנהל הארגון שלך. כדי לגשת לכספת, עליך לעדכן אותה כעת. בהמשך תנותק מההפעלה הנוכחית שלך ותידרש להיכנס שוב. הפעלות אחרות הפתוחות במכשירים שונים ימשיכו להיות פעילים עד משך שעה אחת." + }, + "hours": { + "message": "שעות" + }, + "minutes": { + "message": "דקות" + }, + "vaultTimeoutPolicyInEffect": { + "message": "מדיניות הארגון שלך משפיעה על הזמן הקצוב לכספת שלך. פסק הזמן המרבי המותר לכספת הוא $HOURS$ שע(ה/ות) ו $MINUTES$ דק(ה/ות)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "הזמן הקצוב לכספת שלך חורג מהמגבלות שנקבעו על ידי הארגון שלך." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "רישום אוטומטי" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "לארגון זה יש מדיניות ארגונית שרושמת אותך אוטומטית לאיפוס סיסמה. הרישום יאפשר למנהלי הארגון לשנות את סיסמת האב שלך." + }, + "vaultExportDisabled": { + "message": "ייצוא מהכספת מושבת" + }, + "personalVaultExportPolicyInEffect": { + "message": "מדיניות אחת או יותר של הארגון שלך מונעות ממך לייצא את הכספת האישית שלך." + }, + "addAccount": { + "message": "הוספת חשבון" + }, + "removeMasterPassword": { + "message": "הסרת סיסמה ראשית" + }, + "removedMasterPassword": { + "message": "הסיסמה הראשית הוסרה." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ משתמשים ב־SSO עם שרת מפתחות באירוח עצמי. סיסמה ראשית לא נחוצה יותר לטובת כניסה לחברי הארגון.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "לעזוב את הארגון" + }, + "leaveOrganizationConfirmation": { + "message": "לעזוב את הארגון?" + }, + "leftOrganization": { + "message": "עזבת את הארגון." + }, + "ssoKeyConnectorUnavailable": { + "message": "לא ניתן להגיע למחבר המפתח, נא לנסות שוב." + }, + "lockAllVaults": { + "message": "נעילת כל הכספות" + }, + "accountLimitReached": { + "message": "אפשר להיכנס לעד 5 חשבונות בו־זמנית." + }, + "accountPreferences": { + "message": "העדפות" + }, + "appPreferences": { + "message": "הגדרות היישום (כל החשבונות)" + }, + "accountSwitcherLimitReached": { + "message": "הגעת למגבלת החשבונות. יש לצאת מחשבון כדי להוסיף אחד נוסף." + }, + "settingsTitle": { + "message": "הגדרות היישום עבור $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "החלף חשבון" + }, + "options": { + "message": "אפשרויות" + }, + "sessionTimeout": { + "message": "זמן ההפעלה שלך תם. נא לחזור ולנסות להיכנס שוב." + }, + "exportingPersonalVaultTitle": { + "message": "הכספת האישית מיוצאת" + }, + "exportingPersonalVaultDescription": { + "message": "רק פריטי הכספת האישית שמשויכת עם $EMAIL$ ייוצאו. פריטי הכספת הארגוניים לא יהיו חלק מהייצוא.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "מחולל" + }, + "whatWouldYouLikeToGenerate": { + "message": "מה ברצונך לחולל?" + }, + "passwordType": { + "message": "סוג סיסמה" + }, + "regenerateUsername": { + "message": "חולל מחדש שם משתמש" + }, + "generateUsername": { + "message": "חולל שם משתמש" + }, + "usernameType": { + "message": "סוג שם משתמש" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "אקראי" + }, + "randomWord": { + "message": "מילה אקראית" + }, + "websiteName": { + "message": "שם אתר" + }, + "service": { + "message": "שירות" + } +} diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json new file mode 100644 index 0000000000..abce23b0f0 --- /dev/null +++ b/apps/desktop/src/locales/hi/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "फ़िल्टर" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "नाम" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json new file mode 100644 index 0000000000..e8ec3f7124 --- /dev/null +++ b/apps/desktop/src/locales/hr/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtri" + }, + "allItems": { + "message": "Sve stavke" + }, + "favorites": { + "message": "Favoriti" + }, + "types": { + "message": "Vrste" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeCard": { + "message": "Platna kartica" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sigurna bilješka" + }, + "folders": { + "message": "Mape" + }, + "collections": { + "message": "Zbirke" + }, + "searchVault": { + "message": "Pretraživanje trezora" + }, + "addItem": { + "message": "Dodaj stavku" + }, + "shared": { + "message": "Dijeljeno" + }, + "share": { + "message": "Podijeli" + }, + "moveToOrganization": { + "message": "Premjesti u organizaciju" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ premješteno u $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Odaberi organizaciju u koju želiš premjestiti ovu stavku. Premještanje prenosi vlasništvo stavke na organizaciju. Nakon premještanja više nećeš biti izravni vlasnik ove stavke." + }, + "attachments": { + "message": "Privitci" + }, + "viewItem": { + "message": "Prikaz stavke" + }, + "name": { + "message": "Naziv" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Novi URI" + }, + "username": { + "message": "Korisničko ime" + }, + "password": { + "message": "Lozinka" + }, + "passphrase": { + "message": "Frazna lozinka" + }, + "editItem": { + "message": "Uredi stavku" + }, + "emailAddress": { + "message": "Adresa e-pošte" + }, + "verificationCodeTotp": { + "message": "Kôd za provjeru (TOTP)" + }, + "website": { + "message": "Web stranica" + }, + "notes": { + "message": "Bilješke" + }, + "customFields": { + "message": "Prilagođena polja" + }, + "launch": { + "message": "Pokreni" + }, + "copyValue": { + "message": "Kopiraj vrijednost", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimiziraj pri kopiranju u međuspremnik" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimiziraj pri kopiranju stavke u međuspremnik." + }, + "toggleVisibility": { + "message": "Prikaži/Sakrij" + }, + "toggleCollapse": { + "message": "Sažmi/Proširi", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Vlasnik kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Vrsta kartice" + }, + "expiration": { + "message": "Istek" + }, + "securityCode": { + "message": "Kontrolni broj" + }, + "identityName": { + "message": "identityName" + }, + "company": { + "message": "Tvrtka" + }, + "ssn": { + "message": "Broj socijalnog osiguranja" + }, + "passportNumber": { + "message": "Broj putovnice" + }, + "licenseNumber": { + "message": "Broj licence" + }, + "email": { + "message": "E-pošta" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresa" + }, + "premiumRequired": { + "message": "Potrebno premium članstvo" + }, + "premiumRequiredDesc": { + "message": "Za korištenje ove značajke potrebno je premium članstvo." + }, + "errorOccurred": { + "message": "Došlo je do pogreške." + }, + "error": { + "message": "Pogreška" + }, + "january": { + "message": "siječanj" + }, + "february": { + "message": "veljača" + }, + "march": { + "message": "ožujak" + }, + "april": { + "message": "travanj" + }, + "may": { + "message": "svibanj" + }, + "june": { + "message": "lipanj" + }, + "july": { + "message": "srpanj" + }, + "august": { + "message": "kolovoz" + }, + "september": { + "message": "rujan" + }, + "october": { + "message": "listopad" + }, + "november": { + "message": "studeni" + }, + "december": { + "message": "prosinac" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titula" + }, + "mr": { + "message": "g." + }, + "mrs": { + "message": "gđa." + }, + "ms": { + "message": "gđica." + }, + "dr": { + "message": "dr." + }, + "expirationMonth": { + "message": "Mjesec isteka" + }, + "expirationYear": { + "message": "Godina isteka" + }, + "select": { + "message": "Odaberi" + }, + "other": { + "message": "Ostalo" + }, + "generatePassword": { + "message": "Generiraj lozinku" + }, + "type": { + "message": "Vrsta" + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje ime" + }, + "lastName": { + "message": "Prezime" + }, + "fullName": { + "message": "Ime i prezime" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Grad / Mjesto" + }, + "stateProvince": { + "message": "Država / Pokrajina" + }, + "zipPostalCode": { + "message": "Poštanski broj" + }, + "country": { + "message": "Zemlja" + }, + "save": { + "message": "Spremi" + }, + "cancel": { + "message": "Odustani" + }, + "delete": { + "message": "Izbriši" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Uredi" + }, + "authenticatorKeyTotp": { + "message": "Ključ autentifikatora (TOTP)" + }, + "folder": { + "message": "Mapa" + }, + "newCustomField": { + "message": "Novo prilagođeno polje" + }, + "value": { + "message": "Vrijednost" + }, + "dragToSort": { + "message": "Povuci za sortiranje" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Skriveno" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Povezano", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Povezana vrijednost", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Ukloni" + }, + "nameRequired": { + "message": "Ime je obavezno." + }, + "addedItem": { + "message": "Stavka dodana" + }, + "editedItem": { + "message": "Stavka izmijenjena" + }, + "deleteItem": { + "message": "Izbriši stavku" + }, + "deleteFolder": { + "message": "Izbriši mapu" + }, + "deleteAttachment": { + "message": "Izbriši privitak" + }, + "deleteItemConfirmation": { + "message": "Želiš li zaista poslati u smeće?" + }, + "deletedItem": { + "message": "Stavka poslana u smeće" + }, + "overwritePasswordConfirmation": { + "message": "Sigurno želiš prebrisati trenutnu lozinku?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Nema mape", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj mapu" + }, + "editFolder": { + "message": "Uredi mapu" + }, + "regeneratePassword": { + "message": "Ponovno generiraj lozinku" + }, + "copyPassword": { + "message": "Kopiraj lozinku" + }, + "copyUri": { + "message": "Kopiraj URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopiraj kôd za provjeru (TOTP)" + }, + "length": { + "message": "Duljina" + }, + "numWords": { + "message": "Broj riječi" + }, + "wordSeparator": { + "message": "Razdjelitelj riječi" + }, + "capitalize": { + "message": "Prva slova velika", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Uključi broj" + }, + "close": { + "message": "Zatvori" + }, + "minNumbers": { + "message": "Najmanje brojeva" + }, + "minSpecial": { + "message": "Najmanje specijalnih", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izbjegavaj dvosmislene znakove" + }, + "searchCollection": { + "message": "Pretraživanje zbirke" + }, + "searchFolder": { + "message": "Pretraživanje mape" + }, + "searchFavorites": { + "message": "Pretraživanje favorita" + }, + "searchType": { + "message": "Tip pretrage", + "description": "Search item type" + }, + "newAttachment": { + "message": "Dodaj novi privitak" + }, + "deletedAttachment": { + "message": "Izbrisani privitak" + }, + "deleteAttachmentConfirmation": { + "message": "Sigurno želiš izbrisati ovaj privitak?" + }, + "attachmentSaved": { + "message": "Privitak je spremljen." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Odaberi datoteku." + }, + "maxFileSize": { + "message": "Najveća veličina datoteke je 500 MB." + }, + "updateKey": { + "message": "Ne možeš koristiti ovu značajku prije nego ažuriraš ključ za šifriranje." + }, + "editedFolder": { + "message": "Uređena mapa" + }, + "addedFolder": { + "message": "Mapa dodana" + }, + "deleteFolderConfirmation": { + "message": "Sigurno želiš izbrisati ovu mapu?" + }, + "deletedFolder": { + "message": "Mapa izbrisana" + }, + "loginOrCreateNewAccount": { + "message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru." + }, + "createAccount": { + "message": "Stvori račun" + }, + "logIn": { + "message": "Prijavi se" + }, + "submit": { + "message": "Pošalji" + }, + "masterPass": { + "message": "Glavna lozinka" + }, + "masterPassDesc": { + "message": "Glavnu lozinku koristiš za pristup svom trezoru. Vrlo je važno da ne zaboraviš glavnu lozinku. Ne postoji način za oporavak lozinke u slučaju da ju zaboraviš." + }, + "masterPassHintDesc": { + "message": "Podsjetnik glavne lozinke ti može pomoći da se prisjetiš svoje lozinke ako ju zaboraviš." + }, + "reTypeMasterPass": { + "message": "Ponovno upiši glavnu lozinku" + }, + "masterPassHint": { + "message": "Podsjetnik glavne lozinke (neobavezno)" + }, + "settings": { + "message": "Postavke" + }, + "passwordHint": { + "message": "Podsjetnik za lozinku" + }, + "enterEmailToGetHint": { + "message": "Unesi adresu e-pošte svog računa za primitak podsjetnika glavne lozinke." + }, + "getMasterPasswordHint": { + "message": "Slanje podsjetnika glavne lozinke" + }, + "emailRequired": { + "message": "Adresa e-pošte je obavezna." + }, + "invalidEmail": { + "message": "Nevažeća adresa e-pošte." + }, + "masterPassRequired": { + "message": "Potrebna je glavna lozinka." + }, + "masterPassLength": { + "message": "Glavna lozinka mora imati najmanje 8 znakova." + }, + "masterPassDoesntMatch": { + "message": "Potvrda glavne lozinke se ne podudara." + }, + "newAccountCreated": { + "message": "Tvoj novi račun je kreiran! Sada se možeš prijaviti." + }, + "masterPassSent": { + "message": "Poslali smo e-poštu s podsjetnikom glavne lozinke." + }, + "unexpectedError": { + "message": "Došlo je do neočekivane pogreške." + }, + "itemInformation": { + "message": "Informacije o stavci" + }, + "noItemsInList": { + "message": "Nema stavki za prikaz." + }, + "sendVerificationCode": { + "message": "Slanje verifikacijskog kôda e-poštom" + }, + "sendCode": { + "message": "Pošalji kôd" + }, + "codeSent": { + "message": "Kôd poslan" + }, + "verificationCode": { + "message": "Kôd za provjeru" + }, + "confirmIdentity": { + "message": "Potvrdite lozinku za nastavak." + }, + "verificationCodeRequired": { + "message": "Potvrdni kôd je obavezan." + }, + "invalidVerificationCode": { + "message": "Nevažeći kôd za provjeru" + }, + "continue": { + "message": "Nastavi" + }, + "enterVerificationCodeApp": { + "message": "Unesi 6-znamenkasti kontrolni kôd iz autentifikatorske aplikacije." + }, + "enterVerificationCodeEmail": { + "message": "Unesi 6-znamenkasti kontrolni kôd poslan e-poštom na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-pošta za potvrdu poslana je na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamti me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Ponovno slanje kontrolnog koda e-poštom" + }, + "useAnotherTwoStepMethod": { + "message": "Koristiti drugi način prijave u dva koraka" + }, + "insertYubiKey": { + "message": "Umetni svoj YubiKey u USB priključak računala, a zatim dodirni njegovu tipku." + }, + "insertU2f": { + "message": "Umetni svoj sigurnosni ključ u USB priključak računala. Ako ima tipku, dodirni ju." + }, + "recoveryCodeDesc": { + "message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvojem računu." + }, + "recoveryCodeTitle": { + "message": "Kôd za oporavak" + }, + "authenticatorAppTitle": { + "message": "Autentifikatorska aplikacija" + }, + "authenticatorAppDesc": { + "message": "Koristi autentifikatorsku aplikaciju (npr. Authy ili Google Authentifikator) za generiranje kontrolnih kodova.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP sigurnosni ključ" + }, + "yubiKeyDesc": { + "message": "Koristi YubiKey za pristup svojem računu. Radi s YubiKey 4, 4 Nano, 4C i NEO uređajima." + }, + "duoDesc": { + "message": "Potvrdi s Duo Security pomoću aplikacije Duo Mobile, SMS-om, telefonskim pozivom ili U2F sigurnosnim ključem.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Potvrdi s Duo Security za svoju organizaciju pomoću aplikacije Duo Mobile, SMS-om, telefonskim pozivom ili U2F sigurnosnim ključem.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Koristi bilo koji WebAuthn omogućen sigurnosni ključ za pristup svojem računu." + }, + "emailTitle": { + "message": "E-pošta" + }, + "emailDesc": { + "message": "Verifikacijski kodovi će biti poslani e-poštom." + }, + "loginUnavailable": { + "message": "Prijava nije dostupna" + }, + "noTwoStepProviders": { + "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim, niti jedan od konfiguriranih pružatelja prijave u dva koraka ne podržava ovaj uređaj." + }, + "noTwoStepProviders2": { + "message": "Dodaj dodatne pružatelje, bolje podržane na uređajima (npr. aplikacija Autentifikator)." + }, + "twoStepOptions": { + "message": "Mogućnosti prijave u dva koraka" + }, + "selfHostedEnvironment": { + "message": "Vlastito hosting okruženje" + }, + "selfHostedEnvironmentFooter": { + "message": "Navedi osnovni URL svoje lokalno smještene Bitwarden instalacije." + }, + "customEnvironment": { + "message": "Prilagođeno okruženje" + }, + "customEnvironmentFooter": { + "message": "Za napredne korisnike. Samostalno možeš odrediti osnovni URL svake usluge." + }, + "baseUrl": { + "message": "URL poslužitelja" + }, + "apiUrl": { + "message": "URL API poslužitelja" + }, + "webVaultUrl": { + "message": "URL poslužitelja web trezora" + }, + "identityUrl": { + "message": "URL id poslužitelja" + }, + "notificationsUrl": { + "message": "URL poslužitelja obavijesti" + }, + "iconsUrl": { + "message": "URL poslužitelja ikona" + }, + "environmentSaved": { + "message": "URL-ovi okoline su spremljeni." + }, + "ok": { + "message": "U redu" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "overwritePassword": { + "message": "Prebriši lozinku" + }, + "learnMore": { + "message": "Saznaj više" + }, + "featureUnavailable": { + "message": "Značajka nije dostupna" + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Sesija je istekla." + }, + "logOutConfirmation": { + "message": "Sigurno se želiš odjaviti?" + }, + "logOut": { + "message": "Odjavi se" + }, + "addNewLogin": { + "message": "Dodaj novu prijavu" + }, + "addNewItem": { + "message": "Dodaj novu stavku" + }, + "addNewFolder": { + "message": "Dodaj novu mapu" + }, + "view": { + "message": "Prikaz" + }, + "account": { + "message": "Račun" + }, + "loading": { + "message": "Učitavanje..." + }, + "lockVault": { + "message": "Zaključaj trezor" + }, + "passwordGenerator": { + "message": "Generator lozinki" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Podnesi izvješće o grešci" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Prati nas" + }, + "syncVault": { + "message": "Odmah sinkroniziraj trezor" + }, + "changeMasterPass": { + "message": "Promjeni glavnu lozinku" + }, + "changeMasterPasswordConfirmation": { + "message": "Svoju glavnu lozinku možeš promijeniti na web trezoru. Želiš li sada posjetiti bitwarden.com?" + }, + "fingerprintPhrase": { + "message": "Jedinstvena fraza", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Jedinstvena fraza tvog računa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Idi na web trezor" + }, + "getMobileApp": { + "message": "Preuzmi mobilnu aplikaciju" + }, + "getBrowserExtension": { + "message": "Preuzmi proširenje za preglednik" + }, + "syncingComplete": { + "message": "Sinkronizacija dovršena" + }, + "syncingFailed": { + "message": "Sinkronizacija nije uspjela" + }, + "yourVaultIsLocked": { + "message": "Tvoj trezor je zaključan. Potvrdi glavnu lozinku za nastavak." + }, + "unlock": { + "message": "Otključaj" + }, + "loggedInAsOn": { + "message": "Prijavljen kao $EMAIL$ na $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Neispravna glavna lozinka" + }, + "twoStepLoginConfirmation": { + "message": "Prijava u dva koraka čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja sigurnosnim ključem, autentifikatorskom aplikacijom, SMS-om, pozivom ili e-poštom. Prijavu u dva koraka možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?" + }, + "twoStepLogin": { + "message": "Prijava u dva koraka" + }, + "vaultTimeout": { + "message": "Istek trezora" + }, + "vaultTimeoutDesc": { + "message": "Odaberi kada će isteći trezor i koja će se radnja izvršiti." + }, + "immediately": { + "message": "Odmah" + }, + "tenSeconds": { + "message": "10 sekundi" + }, + "twentySeconds": { + "message": "20 sekundi" + }, + "thirtySeconds": { + "message": "30 sekundi" + }, + "oneMinute": { + "message": "1 minuta" + }, + "twoMinutes": { + "message": "2 minute" + }, + "fiveMinutes": { + "message": "5 minuta" + }, + "fifteenMinutes": { + "message": "15 minuta" + }, + "thirtyMinutes": { + "message": "30 minuta" + }, + "oneHour": { + "message": "1 sat" + }, + "fourHours": { + "message": "4 sata" + }, + "onIdle": { + "message": "Nekativnost sustava" + }, + "onSleep": { + "message": "Stanje mirovanja" + }, + "onLocked": { + "message": "Pri zaključavanju sustava" + }, + "onRestart": { + "message": "Kod ponovnog pokretanja" + }, + "never": { + "message": "Nikad" + }, + "security": { + "message": "Sigurnost" + }, + "clearClipboard": { + "message": "Očisti međuspremnik", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatski očisti kopirane vrijednosti iz međuspremnika.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Onemogući ikone web mjesta" + }, + "disableFaviconDesc": { + "message": "Prepoznatljive ikone web mjesta prikazuju se pored prijava u tvojem trezoru." + }, + "enableMinToTray": { + "message": "Minimiziraj u područje obavijesti" + }, + "enableMinToTrayDesc": { + "message": "Kod minimiziranja, prikazuje se ikona u području obavijesti." + }, + "enableMinToMenuBar": { + "message": "Minimiziraj u programsku traku" + }, + "enableMinToMenuBarDesc": { + "message": "Kod minimiziranja, prikazuje se ikona u programskoj traci." + }, + "enableCloseToTray": { + "message": "Zatvaranje u područje obavijesti" + }, + "enableCloseToTrayDesc": { + "message": "Kod zatvaranja prozora, prikazuje se ikona u području obavijesti." + }, + "enableCloseToMenuBar": { + "message": "Zatvaranje u programsku traku" + }, + "enableCloseToMenuBarDesc": { + "message": "Kod zatvaranja prozora, prikazuje se ikona u programskoj traci." + }, + "enableTray": { + "message": "Omogući ikonu u području obavijesti" + }, + "enableTrayDesc": { + "message": "Uvijek prikaži ikonu u području obavijesti." + }, + "startToTray": { + "message": "Pokreni u područje obavijesti" + }, + "startToTrayDesc": { + "message": "Prilikom pokretanja aplikacije prikazuje se samo ikona u području obavijesti." + }, + "startToMenuBar": { + "message": "Pokreni u programsku traku" + }, + "startToMenuBarDesc": { + "message": "Prilikom pokretanja aplikacije prikazuje se ikona u programskoj traci." + }, + "openAtLogin": { + "message": "Automatsko pokretanje kod prijave" + }, + "openAtLoginDesc": { + "message": "Automatski pokreni Bitwarden desktop aplikaciju kod prijave." + }, + "alwaysShowDock": { + "message": "Uvijek prikaži u Docku" + }, + "alwaysShowDockDesc": { + "message": "Prikaži Bitwareden ikonu u Docku čak i kada je minimiziran u traku s izbornicima." + }, + "confirmTrayTitle": { + "message": "Potvrdi onemogućavanje pladnja" + }, + "confirmTrayDesc": { + "message": "Isključivanjem ove opcije isključiti će se sve druge postavke vezane za pladanj." + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Promijeni jezik aplikacije. Potrebno je ponovno pokretanje." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Promijeni temu boja." + }, + "dark": { + "message": "Tamna", + "description": "Dark color" + }, + "light": { + "message": "Svijetla", + "description": "Light color" + }, + "copy": { + "message": "Kopiraj", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Provjeri ažuriranja" + }, + "version": { + "message": "Verzija $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Ponovo pokreni za ažuriranje" + }, + "restartToUpdateDesc": { + "message": "Verzija $VERSION_NUM$ je spremna za instalaciju. Moraš ponovno pokrenuti Bitwarden za dovršetak instalacije. Želiš li ponovo pokrenuti i ažurirati?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Dostupna su ažuriranja" + }, + "updateAvailableDesc": { + "message": "Pronađeno je ažuriranje. Želiš li ga sada preuzeti?" + }, + "restart": { + "message": "Ponovno pokreni" + }, + "later": { + "message": "Kasnije" + }, + "noUpdatesAvailable": { + "message": "Trenutno nema ažuriranja. Već koristiš najnoviju verziju." + }, + "updateError": { + "message": "Pogreška pri ažuriranju" + }, + "unknown": { + "message": "Nepoznato" + }, + "copyUsername": { + "message": "Kopiraj korisničko ime" + }, + "copyNumber": { + "message": "Kopiraj broj", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiraj kontrolni broj", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium članstvo" + }, + "premiumManage": { + "message": "Upravljaj članstvom" + }, + "premiumManageAlert": { + "message": "Svojim članstvom možeš upravljati na web trezoru. Želiš li sada posjetiti bitwarden.com?" + }, + "premiumRefresh": { + "message": "Osvježi status članstva" + }, + "premiumNotCurrentMember": { + "message": "Trenutno nisi premium član." + }, + "premiumSignUpAndGet": { + "message": "Prijavi se za premium članstvo, čime dobivaš:" + }, + "premiumSignUpStorage": { + "message": "1 GB šifriranog prostora za pohranu podataka." + }, + "premiumSignUpTwoStep": { + "message": "Dodatne mogućnosti za prijavu u dva koraka kao što su YubiKey, FIDO U2F i Duo." + }, + "premiumSignUpReports": { + "message": "Higijenu lozinki, zdravlje računa i izvještaje o krađi podatak radi zaštite svojeg trezora." + }, + "premiumSignUpTotp": { + "message": "Generator TOTP kontrolnog koda (2FA) za prijave u tvom trezoru." + }, + "premiumSignUpSupport": { + "message": "Prioritetnu korisničku podršku." + }, + "premiumSignUpFuture": { + "message": "Sve buduće premium značajke. Uskoro više!" + }, + "premiumPurchase": { + "message": "Kupi premium članstvo" + }, + "premiumPurchaseAlert": { + "message": "Možeš kupiti premium članstvo na web trezoru. Želiš li sada posjetiti bitwarden.com?" + }, + "premiumCurrentMember": { + "message": "Ti si premium član!" + }, + "premiumCurrentMemberThanks": { + "message": "Hvala ti što podupireš Bitwarden." + }, + "premiumPrice": { + "message": "Sve za samo $PRICE$ /godišnje!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Osvježavanje završeno" + }, + "passwordHistory": { + "message": "Povijest" + }, + "clear": { + "message": "Očisti", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Nema lozinki na popisu." + }, + "undo": { + "message": "Poništi" + }, + "redo": { + "message": "Vrati" + }, + "cut": { + "message": "Izreži", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Zalijepi", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Odaberi sve" + }, + "zoomIn": { + "message": "Povećaj" + }, + "zoomOut": { + "message": "Smanji" + }, + "resetZoom": { + "message": "Poništi zumiranje" + }, + "toggleFullScreen": { + "message": "Uključi/isključi prikaz preko cijelog zaslona" + }, + "reload": { + "message": "Ponovno učitaj" + }, + "toggleDevTools": { + "message": "Uključi/isključi razvojne alate" + }, + "minimize": { + "message": "Minimiziraj", + "description": "Minimize window" + }, + "zoom": { + "message": "Povećaj" + }, + "bringAllToFront": { + "message": "Premjesti sve u prednji plan", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "O aplikaciji Bitwarden" + }, + "services": { + "message": "Usluge" + }, + "hideBitwarden": { + "message": "Sakrij Bitwarden" + }, + "hideOthers": { + "message": "Sakrij ostale" + }, + "showAll": { + "message": "Prikaži sve" + }, + "quitBitwarden": { + "message": "Zatvori Bitwarden" + }, + "valueCopied": { + "message": " kopirano", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Pomoć" + }, + "window": { + "message": "Prozor" + }, + "checkPassword": { + "message": "Provjeri je li lozinka bila ukradena." + }, + "passwordExposed": { + "message": "Ova lozinka je otkrivena $VALUE$ put(a) prilikom krađe podataka. Trebalo bi ju promijeniti.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Lozinka nije pronađena niti u jednoj krađi podataka. Sigurna je za korištenje." + }, + "baseDomain": { + "message": "Primarna domena", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Točno" + }, + "startsWith": { + "message": "Počinje s" + }, + "regEx": { + "message": "Regularni izraz", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Otkrivanje podudaranja", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Zadano otkrivanje podudaranja", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Uključi/isključi opcije" + }, + "organization": { + "message": "Organizacija", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Zadano" + }, + "exit": { + "message": "Izlaz" + }, + "showHide": { + "message": "Prikaži / sakrij", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Sakrij u područje obavijesti" + }, + "alwaysOnTop": { + "message": "Uvijek na vrhu", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Ažurirano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lozinka ažurirana", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Izvezi trezor" + }, + "fileFormat": { + "message": "Format datoteke" + }, + "warning": { + "message": "UPOZORENJE", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Potvrdi izvoz trezora" + }, + "exportWarningDesc": { + "message": "Ovaj izvoz sadrži podatke trezora u nešifriranom obliku! Izvezenu datoteku se ne bi smjelo pohranjivati ili slati putem nesigurnih kanala (npr. e-poštom). Izbriši ju odmah nakon završetka korištenja." + }, + "encExportKeyWarningDesc": { + "message": "Ovaj izvoz šifrira tvoje podatke koristeći ključ za šifriranje. Promijeniš li naknadno ključ za šifriranje, potrebno je ponovno napraviti izvoz jer nećeš moći dešifrirati ovu izvezenu datoteku." + }, + "encExportAccountWarningDesc": { + "message": "Ključ za šifriranje jedinstven je za svakog Bitwarden korisnika, kako bi se šifrirani izvoz mogao uvesti u drugi korisnički račun." + }, + "noOrganizationsList": { + "message": "Ne pripadaš niti jednoj organizaciji. Organizacije omogućuju sigurno dijeljenje stavki s drugim korisnicima." + }, + "noCollectionsInList": { + "message": "Nema zbirki za prikaz." + }, + "ownership": { + "message": "Vlasništvo" + }, + "whoOwnsThisItem": { + "message": "Tko je vlasnik ove stavke?" + }, + "strong": { + "message": "Jaka", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobra", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Slaba", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Slaba glavna lozinka" + }, + "weakMasterPasswordDesc": { + "message": "Odabrana glavna lozinka je slaba. Trebaš koristiti jaču glavnu lozinku (ili frazu) kako bi tvoj Bitwarden račun bio pravilno zaštićen. Sigurno želiš koristiti ovakvu, slabu glavnu lozinku?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Otključaj PIN-om" + }, + "setYourPinCode": { + "message": "Postavi svoj PIN kôd za otključavanje Bitwardena. Postavke PIN-a se resetiraju ako se potpuno odjaviš iz aplikacije." + }, + "pinRequired": { + "message": "Potreban je PIN." + }, + "invalidPin": { + "message": "Nerispravan PIN." + }, + "unlockWithWindowsHello": { + "message": "Otključaj koristeći Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Otključaj trezor." + }, + "unlockWithTouchId": { + "message": "Otključaj koristeći Touch ID" + }, + "touchIdConsentMessage": { + "message": "Otključaj trezor" + }, + "noAutoPromptWindowsHello": { + "message": "Ne traži Windows Hello pri pokretanju." + }, + "noAutoPromptTouchId": { + "message": "Ne traži Touch ID pri pokretanju." + }, + "lockWithMasterPassOnRestart": { + "message": "Zaključaj glavnom lozinkom kod svakog pokretanja" + }, + "preferences": { + "message": "Postavke" + }, + "enableMenuBar": { + "message": "Omogući ikonu u traci s izbornicima" + }, + "enableMenuBarDesc": { + "message": "Uvijek prikaži ikonu u traci s izbornicima." + }, + "hideToMenuBar": { + "message": "Sakrij u traku s izbornicima" + }, + "selectOneCollection": { + "message": "Moraš odabrati barem jednu zbirku." + }, + "premiumUpdated": { + "message": "Premium nadogradnja uspješna." + }, + "restore": { + "message": "Vrati" + }, + "premiumManageAlertAppStore": { + "message": "Svoju pretplatu možeš mijenjati u App Store-u. Želiš li ga sada otvoriti?" + }, + "legal": { + "message": "Pravne informacije", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Uvjeti korištenja" + }, + "privacyPolicy": { + "message": "Pravila privatnosti" + }, + "unsavedChangesConfirmation": { + "message": "Sigurno želiš otići? Svi trenutni podaci neće biti spremljeni." + }, + "unsavedChangesTitle": { + "message": "Nespremljene promjene" + }, + "clone": { + "message": "Kloniraj" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedno ili više pravila organizacije utječe na postavke generatora." + }, + "vaultTimeoutAction": { + "message": "Nakon isteka trezora" + }, + "vaultTimeoutActionLockDesc": { + "message": "Zaključani trezor, za ponovni pristup, zahtijeva ponovni unos tvoje glavne lozinke." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Odjavljeni trezor, za ponovni pristup, zahtijeva ponovnu provjeru autentičnosti." + }, + "lock": { + "message": "Zaključaj", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Smeće", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Pretraži smeće" + }, + "permanentlyDeleteItem": { + "message": "Trajno izbriši stavku" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Želiš li zaista trajno izbrisati ovu stavku?" + }, + "permanentlyDeletedItem": { + "message": "Trajno izbirsana stavka" + }, + "restoreItem": { + "message": "Vrati stavku" + }, + "restoreItemConfirmation": { + "message": "Sigurno želiš vratiti ovu stavku?" + }, + "restoredItem": { + "message": "Stavka vraćena" + }, + "permanentlyDelete": { + "message": "Trajno izbriši" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Odjava će ukloniti pristup tvojem trezoru i zahtijeva mrežnu potvrdu identiteta nakon isteka vremenske neaktivnosti. Sigurno želiš koristiti ovu postavku?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Potvrda akcije vremenske neaktivnosti" + }, + "enterpriseSingleSignOn": { + "message": "Jedinstvena prijava na razini tvrtke (SSO)" + }, + "setMasterPassword": { + "message": "Postavi glavnu lozinku" + }, + "ssoCompleteRegistration": { + "message": "Za dovršetak jedinstvene prijave na razini tvrtke (SSO), postavi glavnu lozinku za pristup i zaštitu tvog trezora." + }, + "newMasterPass": { + "message": "Nova glavna lozinka" + }, + "confirmNewMasterPass": { + "message": "Potvrdi novu glavnu lozinku" + }, + "masterPasswordPolicyInEffect": { + "message": "Jedno ili više pravila organizacije zahtijeva da tvoja glavna lozinka ispunjava sljedeće uvjete:" + }, + "policyInEffectMinComplexity": { + "message": "Minimalna ocjena složenosti od $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Duljina najmanje $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Sadrži jedno ili više velikih slova" + }, + "policyInEffectLowercase": { + "message": "Sadrži jedno ili više malih slova" + }, + "policyInEffectNumbers": { + "message": "Sadrži jedan ili više brojeva" + }, + "policyInEffectSpecial": { + "message": "Sadrži jedan ili više sljedećih posebnih znakova $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Tvoja nova glavna lozinka ne ispunjava zahtjeve." + }, + "acceptPolicies": { + "message": "Označavanjem ove kućice slažete se sa sljedećim:" + }, + "acceptPoliciesError": { + "message": "Uvjeti korištenja i Pravila privatnosti nisu prihvaćeni." + }, + "enableBrowserIntegration": { + "message": "Uključi integraciju s web preglednikom" + }, + "enableBrowserIntegrationDesc": { + "message": "Integracija s preglednikom koristi se za biometriju u pregledniku." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Integracija s preglednikom nije omogućena" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Nažalost, za sada je integracija s preglednikom podržana samo u Mac App Store verziji aplikacije." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Integracija s preglednikom nije podržana" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Nažalost, integracija s preglednikom nije podržana u Windows Store verziji aplikacije." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Traži verifikaciju za integraciju s preglednikom" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Uključi dodatni sloj sigurnosti tražeći verifikaciju jedinstvenom frazom prilikom povezivanja radne površine i preglednika. Kada je ovo uključeno, potrebno je verificirati prilikom svakog novog povezivanja." + }, + "approve": { + "message": "Odobri" + }, + "verifyBrowserTitle": { + "message": "Verificiraj vezu s preglednikom" + }, + "verifyBrowserDesc": { + "message": "Provjeri da je prikazana jedinstvena fraza identična onoj prikazanoj u proširenju preglednika." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrija nije omogućena" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrija preglednika zahtijeva prethodno omogućenu biometriju u Bitwarden desktop aplikaciji." + }, + "personalOwnershipSubmitError": { + "message": "Pravila tvrtke onemogućuju spremanje stavki u osobni trezor. Promijeni vlasništvo stavke na tvrtku i odaberi dostupnu Zbirku." + }, + "hintEqualsPassword": { + "message": "Podsjetnik za lozinku ne može biti isti kao lozinka." + }, + "personalOwnershipPolicyInEffect": { + "message": "Pravila organizacije utječu na tvoje mogućnosti vlasništva." + }, + "allSends": { + "message": "Svi Sendovi", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Datoteka" + }, + "sendTypeText": { + "message": "Tekst" + }, + "searchSends": { + "message": "Pretraži Sendove", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Uredi Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Moj trezor" + }, + "text": { + "message": "Tekst" + }, + "deletionDate": { + "message": "Obriši za" + }, + "deletionDateDesc": { + "message": "Send će nakon navedenog vremena biti trajno izbrisan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Vremenski ograničeni pristup" + }, + "expirationDateDesc": { + "message": "Pristup ovom Sendu neće biti moguć nakon navednog roka.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Ograničeni broj pristupanja" + }, + "maxAccessCountDesc": { + "message": "Ako je određen, ovom Sendu će se moći pristupiti samo ograničeni broj puta.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Trenutni broj pristupanja" + }, + "disableSend": { + "message": "Onemogući ovaj Send da mu nitko ne može pristupiti.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Neobavezno zahtijevaj korisnika lozinku za pristup ovom Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Privatne bilješke o Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Veza na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Veza na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Zadano sakrij tekst pri pristupanju Sendu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send stvoren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send uređen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send izbrisan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nova lozinka" + }, + "whatTypeOfSend": { + "message": "Koja je ovo vrsta Senda?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Stvori Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Tekst kojeg želiš poslati." + }, + "sendFileDesc": { + "message": "Datoteka koju želiš poslati." + }, + "days": { + "message": "$DAYS$ dana", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dan" + }, + "custom": { + "message": "Prilagođeno" + }, + "deleteSendConfirmation": { + "message": "Sigurno želiš izbrisati ovaj Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopiraj vezu na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopiraj vezu na Send nakon spremanja" + }, + "sendDisabled": { + "message": "Send onemogućen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Pravila tvrtke omogućuju brisanje samo postojećeg Senda.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopiraj vezu" + }, + "disabled": { + "message": "Onemogućeno" + }, + "maxAccessCountReached": { + "message": "Dostignut najveći broj pristupanja" + }, + "expired": { + "message": "Isteklo" + }, + "pendingDeletion": { + "message": "Čeka brisanje" + }, + "webAuthnAuthenticate": { + "message": "Ovjeri WebAuthn" + }, + "hideEmail": { + "message": "Sakrij moju adresu e-pošte od primatelja." + }, + "sendOptionsPolicyInEffect": { + "message": "Jedno ili više pravila organizacije utječe na postavke Senda." + }, + "emailVerificationRequired": { + "message": "Potrebna je potvrda e-pošte" + }, + "emailVerificationRequiredDesc": { + "message": "Za korištenje ove značajke, potrebna je ovjera e-pošte." + }, + "passwordPrompt": { + "message": "Ponovno zatraži glavnu lozinku" + }, + "passwordConfirmation": { + "message": "Potvrda glavne lozinke" + }, + "passwordConfirmationDesc": { + "message": "Ova radnja je zaštićena. Za nastavak i potvrdu identiteta, unesi svoju glavnu lozinku." + }, + "updatedMasterPassword": { + "message": "Glavna lozinka ažurirana" + }, + "updateMasterPassword": { + "message": "Ažuriraj glavnu lozinku" + }, + "updateMasterPasswordWarning": { + "message": "Tvoju glavnu lozinku je nedavno promijenio administrator tvoje organizacije. Za pristup trezoru, potrebno je ažurirati glavnu lozinku, što će te odjaviti iz trenutne sesije, te ćeš se morati ponovno prijaviti. Aktivne sesije na drugim uređajima mogu ostati aktivne još sat vremena." + }, + "hours": { + "message": "sat(i)" + }, + "minutes": { + "message": "minuta" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Pravilo tvoje organizacije utječe na istek trezora. Najveće dozvoljeno vrijeme isteka je $HOURS$:$MINUTES$ h.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Vrijeme isteka premašuje ograničenje koju je postavila tvoja organizacija." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatsko učlanjenje" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Pravilo ove organizacija automatski će te učlaniti u ponovno postavljanje lozinke. Učlanjenje će omogućiti administratorima organizacije promjenu tvoje glavne lozinke." + }, + "vaultExportDisabled": { + "message": "Izvoz trezora onemogućen" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedno ili više pravila organizacija onemogućuje izvoz osobnog trezora. " + }, + "addAccount": { + "message": "Dodaj račun" + }, + "removeMasterPassword": { + "message": "Ukloni glavnu lozinku" + }, + "removedMasterPassword": { + "message": "Glavna lozinka uklonjena." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ koristi jedinstvenu prijavu SSO s vlastitim poslužiteljem. Članovima organizacije glavna lozinka više nije potrebna.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Napusti organizaciju" + }, + "leaveOrganizationConfirmation": { + "message": "Sigurno želiš napustiti ovu organizaciju?" + }, + "leftOrganization": { + "message": "Organizacija napuštena." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nije moguće spajanje s konektorom za ključ, pokušaj kasnije." + }, + "lockAllVaults": { + "message": "Zaključaj sve trezore" + }, + "accountLimitReached": { + "message": "U isto vrijeme ne smije biti prijavljeno više od 5 računa." + }, + "accountPreferences": { + "message": "Postavke" + }, + "appPreferences": { + "message": "Postavke aplikacije (svi računi)" + }, + "accountSwitcherLimitReached": { + "message": "Dosegnuto je ograničenje računa. Odjavite se s računa da dodate drugi." + }, + "settingsTitle": { + "message": "Postavke aplikacije za $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Promijeni račun" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json new file mode 100644 index 0000000000..79ab96986b --- /dev/null +++ b/apps/desktop/src/locales/hu/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Szűrők" + }, + "allItems": { + "message": "Összes elem" + }, + "favorites": { + "message": "Kedvencek" + }, + "types": { + "message": "Típusok" + }, + "typeLogin": { + "message": "Bejelentkezés" + }, + "typeCard": { + "message": "Kártya" + }, + "typeIdentity": { + "message": "Személyazonosság" + }, + "typeSecureNote": { + "message": "Biztonságos jegyzet" + }, + "folders": { + "message": "Mappák" + }, + "collections": { + "message": "Gyűjtemények" + }, + "searchVault": { + "message": "Keresés a széfben" + }, + "addItem": { + "message": "Elem hozzáadása" + }, + "shared": { + "message": "Megosztva" + }, + "share": { + "message": "Megosztás" + }, + "moveToOrganization": { + "message": "Áthelyezés szervezethez" + }, + "movedItemToOrg": { + "message": "Példaérték $itemname$: titkos elem változóhoz\nPéldaérték $itemname$: cégnév változóhoz\nFájl: messages.json", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Válasszunk egy szervezetet, ahová áthelyezni szeretnénk ezt az elemet. A szervezetbe áthelyezés átruházza az elem tulajdonjogát az adott szervezetre. Az áthelyezés után többé nem leszünk az elem közvetlen tulajdonosa." + }, + "attachments": { + "message": "Mellékletek" + }, + "viewItem": { + "message": "Elem megtekintése" + }, + "name": { + "message": "Név" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI- $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Új URI" + }, + "username": { + "message": "Felhasználónév" + }, + "password": { + "message": "Jelszó" + }, + "passphrase": { + "message": "Kulcskifejezés" + }, + "editItem": { + "message": "Elem szerkesztése" + }, + "emailAddress": { + "message": "Email cím" + }, + "verificationCodeTotp": { + "message": "Ellenőrző kód (egyszeri-idő alapú)" + }, + "website": { + "message": "Webhely" + }, + "notes": { + "message": "Jegyzetek" + }, + "customFields": { + "message": "Egyedi mezők" + }, + "launch": { + "message": "Megnyitás" + }, + "copyValue": { + "message": "Érték másolása", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimalizálás vágólapra másoláskor" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimalizálás asz összes elemadat vágólapra másolásakor." + }, + "toggleVisibility": { + "message": "Láthatóság váltása" + }, + "toggleCollapse": { + "message": "Összezárás váltása", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kártyatulajdonos neve" + }, + "number": { + "message": "Szám" + }, + "brand": { + "message": "Márka" + }, + "expiration": { + "message": "Lejárat" + }, + "securityCode": { + "message": "Biztonsági kód" + }, + "identityName": { + "message": "Személyazonosság megnevezés" + }, + "company": { + "message": "Cég" + }, + "ssn": { + "message": "Társadalombiztosítási szám" + }, + "passportNumber": { + "message": "Útlevélszám" + }, + "licenseNumber": { + "message": "Vezetői engedély száma" + }, + "email": { + "message": "Email cím" + }, + "phone": { + "message": "Telefonszám" + }, + "address": { + "message": "Postai cím" + }, + "premiumRequired": { + "message": "Prémium verzió szükséges" + }, + "premiumRequiredDesc": { + "message": "A funkció használatához prémium tagság szükséges." + }, + "errorOccurred": { + "message": "Valamilyen hiba történt." + }, + "error": { + "message": "Hiba" + }, + "january": { + "message": "január" + }, + "february": { + "message": "február" + }, + "march": { + "message": "március" + }, + "april": { + "message": "április" + }, + "may": { + "message": "május" + }, + "june": { + "message": "június" + }, + "july": { + "message": "július" + }, + "august": { + "message": "augusztus" + }, + "september": { + "message": "szeptember" + }, + "october": { + "message": "október" + }, + "november": { + "message": "november" + }, + "december": { + "message": "december" + }, + "ex": { + "message": "példa:", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Címzés" + }, + "mr": { + "message": "Úr" + }, + "mrs": { + "message": "Asszony" + }, + "ms": { + "message": "Kisasszony" + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Lejárati hónap" + }, + "expirationYear": { + "message": "Lejárati év" + }, + "select": { + "message": "Kijelölés" + }, + "other": { + "message": "Egyéb" + }, + "generatePassword": { + "message": "Jelszó generálása" + }, + "type": { + "message": "Típus" + }, + "firstName": { + "message": "Személynév" + }, + "middleName": { + "message": "Középső név" + }, + "lastName": { + "message": "Családnév" + }, + "fullName": { + "message": "Teljes név" + }, + "address1": { + "message": "Postai cím 1" + }, + "address2": { + "message": "Postai cím 2" + }, + "address3": { + "message": "Postai cím 3" + }, + "cityTown": { + "message": "Település" + }, + "stateProvince": { + "message": "Állam/Megye" + }, + "zipPostalCode": { + "message": "Irányítószám" + }, + "country": { + "message": "Ország" + }, + "save": { + "message": "Mentés" + }, + "cancel": { + "message": "Mégsem" + }, + "delete": { + "message": "Törlés" + }, + "favorite": { + "message": "Kedvenc" + }, + "edit": { + "message": "Szerkesztés" + }, + "authenticatorKeyTotp": { + "message": "Hitelesítő kulcs (egyszeri-idő alapú)" + }, + "folder": { + "message": "Mappa" + }, + "newCustomField": { + "message": "Új egyedi mező" + }, + "value": { + "message": "Érték" + }, + "dragToSort": { + "message": "Húzás a rendezéshez" + }, + "cfTypeText": { + "message": "Szöveg" + }, + "cfTypeHidden": { + "message": "Rejtett" + }, + "cfTypeBoolean": { + "message": "Logikai" + }, + "cfTypeLinked": { + "message": "Csatolva", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Csatolt érték", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Eltávolítás" + }, + "nameRequired": { + "message": "A név megadása kötelező." + }, + "addedItem": { + "message": "Az elem hozzáadásra került." + }, + "editedItem": { + "message": "Az elem szerkesztésre került." + }, + "deleteItem": { + "message": "Elem törlése" + }, + "deleteFolder": { + "message": "Mappa törlése" + }, + "deleteAttachment": { + "message": "Melléklet törlése" + }, + "deleteItemConfirmation": { + "message": "Biztosan törlésre kerüljön ez az elem?" + }, + "deletedItem": { + "message": "Az elem törlésre került." + }, + "overwritePasswordConfirmation": { + "message": "Biztosan felülírásra kerüljön a jelenlegi jelszó?" + }, + "overwriteUsername": { + "message": "Felhasználónév felülírása" + }, + "overwriteUsernameConfirmation": { + "message": "Biztosan felülírásra kerüljön az aktuális felhasználónév?" + }, + "noneFolder": { + "message": "Nincs mappa", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Mappa hozzáadása" + }, + "editFolder": { + "message": "Mappa szerkesztése" + }, + "regeneratePassword": { + "message": "Jelszó újragenerálása" + }, + "copyPassword": { + "message": "Jelszó másolása" + }, + "copyUri": { + "message": "URI másolása" + }, + "copyVerificationCodeTotp": { + "message": "Ellenőrző kód másolása (TOTP)" + }, + "length": { + "message": "Hossz" + }, + "numWords": { + "message": "Szavak száma" + }, + "wordSeparator": { + "message": "Szó elválasztó" + }, + "capitalize": { + "message": "Nagy kezdőbetű", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Szám is" + }, + "close": { + "message": "Bezárás" + }, + "minNumbers": { + "message": "Minimális szám" + }, + "minSpecial": { + "message": "Minimális speciális", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Félreérthető karakterek mellőzése" + }, + "searchCollection": { + "message": "Gyűjtemény keresése" + }, + "searchFolder": { + "message": "Mappa keresése" + }, + "searchFavorites": { + "message": "Kedvencek keresése" + }, + "searchType": { + "message": "Típus keresése", + "description": "Search item type" + }, + "newAttachment": { + "message": "Új melléklet hozzáadása" + }, + "deletedAttachment": { + "message": "A melléklet törlésre került." + }, + "deleteAttachmentConfirmation": { + "message": "Biztos törlésre kerüljön ez a melléklet?" + }, + "attachmentSaved": { + "message": "A melléklet mentésre került." + }, + "file": { + "message": "Fájl" + }, + "selectFile": { + "message": "Válasszunk egy fájlt." + }, + "maxFileSize": { + "message": "Maximális fájl méret 500 MB." + }, + "updateKey": { + "message": "Ez a funkció nem használható a titkosítási kulcs frissítéséig." + }, + "editedFolder": { + "message": "A mappa szerkesztésre került." + }, + "addedFolder": { + "message": "A mappa hozzáadásra került." + }, + "deleteFolderConfirmation": { + "message": "Biztosan törlésre kerüljön ez a mappa?" + }, + "deletedFolder": { + "message": "A mappa törlésre került." + }, + "loginOrCreateNewAccount": { + "message": "Bejelentkezés vagy új fiók létrehozása a biztonsági széf eléréséhez." + }, + "createAccount": { + "message": "Fiók létrehozása" + }, + "logIn": { + "message": "Bejelentkezés" + }, + "submit": { + "message": "Beküldés" + }, + "masterPass": { + "message": "Mesterjelszó" + }, + "masterPassDesc": { + "message": "A mesterjelszó a jelszó a széf eléréséhez. Nagyon fontos a mesterjelszó ismerete. Nincs mód a jelszó visszaállítására." + }, + "masterPassHintDesc": { + "message": "A mesterjelszó emlékeztető segíthet emlékezni a jelszóra elfelejtés esetén." + }, + "reTypeMasterPass": { + "message": "Mesterjelszó ismételt beírása" + }, + "masterPassHint": { + "message": "Mesterjelszó emlékeztető (nem kötelező)" + }, + "settings": { + "message": "Beállítások" + }, + "passwordHint": { + "message": "Jelszó emlékeztető" + }, + "enterEmailToGetHint": { + "message": "A fiók email címének megadása a mesterjelszó emlékeztető fogadásához." + }, + "getMasterPasswordHint": { + "message": "Mesterjelszó emlékeztető kérése" + }, + "emailRequired": { + "message": "Az email cím megadása kötelező." + }, + "invalidEmail": { + "message": "Az email cím érvénytelen." + }, + "masterPassRequired": { + "message": "A mesterjelszó megadása kötelező." + }, + "masterPassLength": { + "message": "A mesterjelszó legyen legalább 8 karakter hosszú." + }, + "masterPassDoesntMatch": { + "message": "A mesterjelszó megerősítése nem egyezik." + }, + "newAccountCreated": { + "message": "A fiók létrehozásra került. Most már be lehet jelentkezni." + }, + "masterPassSent": { + "message": "Elküldtünk neked egy emailt a mesterjelszó emlékeztetővel." + }, + "unexpectedError": { + "message": "Váratlan hiba történt." + }, + "itemInformation": { + "message": "Elem információ" + }, + "noItemsInList": { + "message": "Nincsenek megjeleníthető elemek." + }, + "sendVerificationCode": { + "message": "Ellenőrző kód elküldése a saját email címre" + }, + "sendCode": { + "message": "Kód küldése" + }, + "codeSent": { + "message": "A kód elküldésre került." + }, + "verificationCode": { + "message": "Ellenőrző kód" + }, + "confirmIdentity": { + "message": "A folytatáshoz meg kell erősíteni a személyazonosságot." + }, + "verificationCodeRequired": { + "message": "Az ellenőrző kód kötelező." + }, + "invalidVerificationCode": { + "message": "Érvénytelen ellenőrző kód" + }, + "continue": { + "message": "Folytatás" + }, + "enterVerificationCodeApp": { + "message": "A 6 számjegyű ellenőrző kód megadása a hitelesítő alkalmazásból." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ email címre elküldött 6 számjegyű ellenőrző kód megadása.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Az ellenőrző kód elküldésre került $EMAIL$ email címre.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Adatok megjegyzése" + }, + "sendVerificationCodeEmailAgain": { + "message": "Megerősítő kód ismételt elküldése emailben" + }, + "useAnotherTwoStepMethod": { + "message": "Másik kétlépcsős bejelentkezési mód használata" + }, + "insertYubiKey": { + "message": "A YubiKey beillesztése a számítógép USB portjába és a rajta levő gomb megnyomása." + }, + "insertU2f": { + "message": "A biztonsági kulcs beillesztése a számítógép USB portjába. Ha van rajta gomb, nyomjuk meg." + }, + "recoveryCodeDesc": { + "message": "Elveszett a hozzáférés az összes kétlépcsős szolgáltatóhoz? A visszaállítókód használatával letilthatók fiókból a kétlépcsős szolgáltatók." + }, + "recoveryCodeTitle": { + "message": "Helyreállító kód" + }, + "authenticatorAppTitle": { + "message": "Hitelesítő alkalmazás" + }, + "authenticatorAppDesc": { + "message": "Hitelesítő alkalmazás használata (mint például az Authy vagy a Google Authenticator) idő alapú ellenőrzőkód generálásához.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP egyszeri időalapú jelszó biztonsági kulcs" + }, + "yubiKeyDesc": { + "message": "YubiKey használata a fiók eléréséhez. Működik a YubiKey 4, 4 Nano, 4C, és NEO eszközökkel." + }, + "duoDesc": { + "message": "Ellenőrzés Duo Security segítségével a Duo Mobile alkalmazás, SMS, telefonhívás vagy U2F biztonsági kulcs használatával.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Ellenőrzés szervezeti Duo Security segítségével a Duo Mobile alkalmazás, SMS, telefonhívás vagy U2F biztonsági kulcs használatával.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Használjunk bármilyen WebAuthn engedélyezett biztonsági kulcsot a saját fiók eléréséhez." + }, + "emailTitle": { + "message": "Email cím" + }, + "emailDesc": { + "message": "Az ellenőrző kódok emailben kerülnek elküldésre." + }, + "loginUnavailable": { + "message": "A bejelentkezés nem érhető el." + }, + "noTwoStepProviders": { + "message": "Ezen a fiókon kétlépcsős bejelentkezés van engedélyezve, de ez az eszköz nem támogatja egyik beállított kétlépcsős szolgáltatót sem." + }, + "noTwoStepProviders2": { + "message": "Az eszközöket jobban támogató további szolgáltatók hozzáadása (például egy hitelesítő alkalmazás)." + }, + "twoStepOptions": { + "message": "Kétlépcsős bejelentkezés opciók" + }, + "selfHostedEnvironment": { + "message": "Saját üzemeltetésű környezet" + }, + "selfHostedEnvironmentFooter": { + "message": "A helyileg üzemeltetett Bitwarden telepítés webcímének megadása." + }, + "customEnvironment": { + "message": "Egyedi környezet" + }, + "customEnvironmentFooter": { + "message": "Haladó felhasználóknak. Minden egyes szolgáltatásnak külön megadható az alap webcím." + }, + "baseUrl": { + "message": "Szerver webcím" + }, + "apiUrl": { + "message": "API szerver webcím" + }, + "webVaultUrl": { + "message": "Webes széf szerver webcím" + }, + "identityUrl": { + "message": "Személyazonosság szerver webcím" + }, + "notificationsUrl": { + "message": "Értesítési szerver webcím" + }, + "iconsUrl": { + "message": "Ikonok szerver webcím" + }, + "environmentSaved": { + "message": "A környezeti webcímek mentésre kerültek." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Igen" + }, + "no": { + "message": "Nem" + }, + "overwritePassword": { + "message": "Jelszó felülírása" + }, + "learnMore": { + "message": "További információ" + }, + "featureUnavailable": { + "message": "Ez a funkció nem érhető el." + }, + "loggedOut": { + "message": "Megtörtént a kijelentkezés." + }, + "loginExpired": { + "message": "A bejelentkezési munkamenet lejárt." + }, + "logOutConfirmation": { + "message": "Biztosan szeretnénk kijelentkezni?" + }, + "logOut": { + "message": "Kijelentkezés" + }, + "addNewLogin": { + "message": "Új bejelentkezés hozzáadása" + }, + "addNewItem": { + "message": "Új elem hozzáadása" + }, + "addNewFolder": { + "message": "Új mappa hozzáadása" + }, + "view": { + "message": "Megtekintés" + }, + "account": { + "message": "Fiók" + }, + "loading": { + "message": "A betöltés folyamatban van..." + }, + "lockVault": { + "message": "Széf lezárása" + }, + "passwordGenerator": { + "message": "Jelszó generátor" + }, + "contactUs": { + "message": "Kapcsolatfelvétel" + }, + "getHelp": { + "message": "Segítségkérés" + }, + "fileBugReport": { + "message": "Hibajelentés" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Követés" + }, + "syncVault": { + "message": "Széf szinkronizálása" + }, + "changeMasterPass": { + "message": "Mesterjelszó módosítása" + }, + "changeMasterPasswordConfirmation": { + "message": "A mesterjelszó megváltoztatható a bitwarden.com webes széfben. Szeretnénk felkeresni a webhelyet mos?" + }, + "fingerprintPhrase": { + "message": "Ujjlenyomat kifejezés", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Fiók ujjlenyomat kifejezése", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ugrás a webes széfhez" + }, + "getMobileApp": { + "message": "Mobil alkalmazás beszerzése" + }, + "getBrowserExtension": { + "message": "Böngésző bővítmény beszerzése" + }, + "syncingComplete": { + "message": "A szinkronizálás befejezésre került." + }, + "syncingFailed": { + "message": "A szinkronizálás meghiúsult." + }, + "yourVaultIsLocked": { + "message": "A széf zárolásra került. A folytatáshoz meg kell adni a mesterjelszót." + }, + "unlock": { + "message": "Feloldás" + }, + "loggedInAsOn": { + "message": "Bejelentkezve mint $EMAIL$ $HOSTNAME$ webhelyen.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "A mesterjelszó érvénytelen." + }, + "twoStepLoginConfirmation": { + "message": "A kétlépcsős bejelentkezés biztonságosabbá teszi a fiókot azzal, hogy meg kell erősíteni a bejelentkezést egy másik olyan eszközzel mint például biztonsági kulcs, hitelesítő alkalmazás, SMS, telefonhívás vagy email. A kétlépcsős bejelentkezést a bitwarden.com webes széfben lehet megváltoztatni. Szeretnénk felkeresni most a webhelyet?" + }, + "twoStepLogin": { + "message": "Kétlépcsős bejelentkezés" + }, + "vaultTimeout": { + "message": "Széf időkifutás" + }, + "vaultTimeoutDesc": { + "message": "Válasszuk ki, hogy a széfnél mikor legyen időkifutás és a kiválasztott művelet végrehajtása." + }, + "immediately": { + "message": "Azonnal" + }, + "tenSeconds": { + "message": "10 másodperc" + }, + "twentySeconds": { + "message": "20 másodperc" + }, + "thirtySeconds": { + "message": "30 másodperc" + }, + "oneMinute": { + "message": "1 perc" + }, + "twoMinutes": { + "message": "2 perc" + }, + "fiveMinutes": { + "message": "5 perc" + }, + "fifteenMinutes": { + "message": "15 perc" + }, + "thirtyMinutes": { + "message": "30 perc" + }, + "oneHour": { + "message": "1 óra" + }, + "fourHours": { + "message": "4 óra" + }, + "onIdle": { + "message": "Rendszer üresjárat esetén" + }, + "onSleep": { + "message": "Rendszer alvó mód esetén" + }, + "onLocked": { + "message": "Rendszer zárolás esetén" + }, + "onRestart": { + "message": "Újraindításkor" + }, + "never": { + "message": "Soha" + }, + "security": { + "message": "Biztonság" + }, + "clearClipboard": { + "message": "Vágólap ürítése", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatikusan törli a vágólapra másolt értékeket.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Webhely ikonok letiltása" + }, + "disableFaviconDesc": { + "message": "A webhelyek ikonjai felismerhető ikonként jelennek meg a széf összes eleme mellett." + }, + "enableMinToTray": { + "message": "Kicsinyítés tálcaikonná" + }, + "enableMinToTrayDesc": { + "message": "Az ablak minimalizálásakor helyette egy ikon jelenik meg a rendszertálcán." + }, + "enableMinToMenuBar": { + "message": "Kicsinyítés a menüsávra" + }, + "enableMinToMenuBarDesc": { + "message": "Az ablak minimalizálásakor helyette egy ikon jelenik meg a rendszertálcán." + }, + "enableCloseToTray": { + "message": "Bezárás tálcaikonba" + }, + "enableCloseToTrayDesc": { + "message": "Az ablak bezárásakor helyette egy ikon jelenik meg a rendszertálcán." + }, + "enableCloseToMenuBar": { + "message": "Befejezés a menüsávnál" + }, + "enableCloseToMenuBarDesc": { + "message": "Az ablak bezárásakor helyette egy ikon jelenik meg a menüsávon." + }, + "enableTray": { + "message": "Tálcaikon engedélyezése" + }, + "enableTrayDesc": { + "message": "Ikon folyamatos megjelenítése a rendszertálcán." + }, + "startToTray": { + "message": "Indítás tálcaikonra" + }, + "startToTrayDesc": { + "message": "Az alkalmazás első indításakor csak egy ikon jelenjen meg a rendszertálcán." + }, + "startToMenuBar": { + "message": "Indítás a menüsávon" + }, + "startToMenuBarDesc": { + "message": "Az alkalmazás első indításakor csak egy ikon jelenjen meg a menüsávon." + }, + "openAtLogin": { + "message": "Automatikus indítás bejelentkezéskor" + }, + "openAtLoginDesc": { + "message": "A Bitwarden asztali alkalmazás automatikus indítása bejelentkezéskor." + }, + "alwaysShowDock": { + "message": "Mindig megjelenik a dokk elemen" + }, + "alwaysShowDockDesc": { + "message": "A Bitwarden ikon megjelenítése a dokk elemben még akkor is, ha a menüsorra van kicsinyítve." + }, + "confirmTrayTitle": { + "message": "Tálca letiltás megerősítése" + }, + "confirmTrayDesc": { + "message": "Ennek a beállításnak a kikapcsolásával az összes többi tálcával kapcsolatos beállítás is letiltásra kerül." + }, + "language": { + "message": "Nyelv" + }, + "languageDesc": { + "message": "Az alkalmazás nyelvének megváltoztatása. Újraindítás szükséges." + }, + "theme": { + "message": "Téma" + }, + "themeDesc": { + "message": "Az alkalmazás színtémájának megváltoztatása." + }, + "dark": { + "message": "Sötét", + "description": "Dark color" + }, + "light": { + "message": "Világos", + "description": "Light color" + }, + "copy": { + "message": "Másolás", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Frissítések ellenőrzése" + }, + "version": { + "message": "Verzió: $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Újraindítás a frissítéshez" + }, + "restartToUpdateDesc": { + "message": "Az új $VERSION_NUM$ verzió készen áll a telepítéshez. A telepítés befejezéséhez újra kell indítani az alkalmazást. Szeretnénk most az újraindítást és a frissítést?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Frissítés érhető el" + }, + "updateAvailableDesc": { + "message": "Egy frissítés jelent meg. Szeretnénk most letölteni?" + }, + "restart": { + "message": "Újraindítás" + }, + "later": { + "message": "Később" + }, + "noUpdatesAvailable": { + "message": "Jelenleg nem található frissítés. A legfrissebb verzió van használatban." + }, + "updateError": { + "message": "Frissítési hiba történt." + }, + "unknown": { + "message": "Ismeretlen" + }, + "copyUsername": { + "message": "Felhasználónév másolása" + }, + "copyNumber": { + "message": "Szám másolása", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Biztonsági kód másolása", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Prémium tagság" + }, + "premiumManage": { + "message": "Tagság kezelése" + }, + "premiumManageAlert": { + "message": "Prémium tagság a bitwarden.com webes széfben kezelhető. Szeretnénk most felkeresni a webhelyet?" + }, + "premiumRefresh": { + "message": "Tagság frissítése" + }, + "premiumNotCurrentMember": { + "message": "Jelenleg nincs prémium tagság." + }, + "premiumSignUpAndGet": { + "message": "Regisztráció a prémium tagságra az alábbi funkciókért:" + }, + "premiumSignUpStorage": { + "message": "1 GB titkosított fájlmelléklet tárhely." + }, + "premiumSignUpTwoStep": { + "message": "További olyan kétlépcsős bejelentkezési opciók mint a YubiKey, FIDO U2F és Duo." + }, + "premiumSignUpReports": { + "message": "Jelszó higiénia, felhasználói fiók biztonsága, és adatszivárgási jelentések a széf biztonsága érdekében." + }, + "premiumSignUpTotp": { + "message": "Egyszeri időalapú TOTP ellenőrző kód (2FA) generátor a széfbe bejelentkezésekhez." + }, + "premiumSignUpSupport": { + "message": "Elsőbbségi ügyfél támogatás." + }, + "premiumSignUpFuture": { + "message": "Minden jövőbeli prémium funkció. Hamarosan jön még több." + }, + "premiumPurchase": { + "message": "Prémium verzió megvásárlása" + }, + "premiumPurchaseAlert": { + "message": "Prémium tagságot a bitwarden.com webes széfben lehet vásárolni. Szeretnénk most felkeresni a webhelyet?" + }, + "premiumCurrentMember": { + "message": "Jelenleg a prémium tagság érvényben van." + }, + "premiumCurrentMemberThanks": { + "message": "Köszönjük a Bitwarden támogatását." + }, + "premiumPrice": { + "message": "Mindez csak $PRICE$ /év.", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "A frissítés befejezésre került." + }, + "passwordHistory": { + "message": "Jelszó előzmények" + }, + "clear": { + "message": "Kiürítés", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Nincsenek listázható jelszavak." + }, + "undo": { + "message": "Visszavonás" + }, + "redo": { + "message": "Megismétlés" + }, + "cut": { + "message": "Kivágás", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Beillesztés", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Összes kijelölése" + }, + "zoomIn": { + "message": "Nagyítás" + }, + "zoomOut": { + "message": "Kicsinyítés" + }, + "resetZoom": { + "message": "Nagyítás alaphelyzetbe" + }, + "toggleFullScreen": { + "message": "Teljes képernyős módra váltás" + }, + "reload": { + "message": "Újratöltés" + }, + "toggleDevTools": { + "message": "Fejlesztőeszközök váltás" + }, + "minimize": { + "message": "Minimalizálás", + "description": "Minimize window" + }, + "zoom": { + "message": "Nagyítás" + }, + "bringAllToFront": { + "message": "Összes előtérbe helyezése", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Bitwarden névjegy" + }, + "services": { + "message": "Szolgáltatások" + }, + "hideBitwarden": { + "message": "Bitwarden elrejtése" + }, + "hideOthers": { + "message": "Többi elrejtése" + }, + "showAll": { + "message": "Összes megjelenítése" + }, + "quitBitwarden": { + "message": "Kilépés a Bitwardenből" + }, + "valueCopied": { + "message": "$VALUE$ másolásra került.", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Súgó" + }, + "window": { + "message": "Ablak" + }, + "checkPassword": { + "message": "A jelszóvédelem ellenőrzése." + }, + "passwordExposed": { + "message": "Ez a jelszó már $VALUE$ alkalommal volt kitéve az adatszivárgásnak. Célszerű megváltoztatni.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Ez a jelszó nem található egyetlen ismert adatszivárgásban sem. Biztonságos a használata." + }, + "baseDomain": { + "message": "Alap domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Tartománynév", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Kiszolgáló", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Pontos" + }, + "startsWith": { + "message": "Ezzel kezdődik:" + }, + "regEx": { + "message": "Reguláris kifejezés", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Találat érzékelés", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Alapértelmezett találat érzékelés", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Opciók váltása" + }, + "organization": { + "message": "Szervezet", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Alapértelmezett" + }, + "exit": { + "message": "Kilépés" + }, + "showHide": { + "message": "Megjelenítés / Elrejtés", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Elrejtés a tálcára" + }, + "alwaysOnTop": { + "message": "Mindig felül", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "A frissítés megtörtént.", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "A jelszó frissítésre került.", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Széf exportálása" + }, + "fileFormat": { + "message": "Fájlformátum" + }, + "warning": { + "message": "FIGYELEM", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Széf exportálás megerősítése" + }, + "exportWarningDesc": { + "message": "Ez az exportálás titkosítás nélkül tartalmazza a széfadatokat.Nem célszerű az exportált fájlt nem biztonságos csatornákon tárolni és továbbküldeni (például emailben). A felhasználás után erősen ajánlott a törlés." + }, + "encExportKeyWarningDesc": { + "message": "Ez az exportálás titkosítja az adatokat a fiók titkosítási kulcsával. Ha a fiók forgatási kulcsa más lesz, akkor újra exportálni kell, mert nem lehet visszafejteni ezt az exportálási fájlt." + }, + "encExportAccountWarningDesc": { + "message": "A fiók titkosítási kulcsai minden Bitwarden felhasználói fiókhoz egyediek, ezért nem importálhatunk titkosított exportálást egy másik fiókba." + }, + "noOrganizationsList": { + "message": "Még nem tartozunk egyik szervezethez sem. A szervezetek lehetővé teszik az elemek megosztását más felhasználókkal." + }, + "noCollectionsInList": { + "message": "Nincsenek megjeleníthető gyűjtemények." + }, + "ownership": { + "message": "Tulajdonjog" + }, + "whoOwnsThisItem": { + "message": "Ki tulajdonolja ezt az elemet?" + }, + "strong": { + "message": "Erős", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Jó", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Gyenge", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Gyenge mesterjelszó" + }, + "weakMasterPasswordDesc": { + "message": "A választott mesterjelszó gyenge. Erős jelszót (vagy kifejezést) kell használni a Bitwarden fiók megfelelő védelme érdekében. Biztosan ezt a mesterjelszót szeretnénk használni?" + }, + "pin": { + "message": "Pinkód", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Felnyitás pinkóddal" + }, + "setYourPinCode": { + "message": "A pinkód beállítása a Bitwarden feloldásához. A pinkód beállítások alaphelyzetbe kerülnek az alkalmazásból történő teljes kijelentkezés után." + }, + "pinRequired": { + "message": "A pinkód szükséges." + }, + "invalidPin": { + "message": "A pinkód érvénytelen." + }, + "unlockWithWindowsHello": { + "message": "Feloldás Windows Hello segítségével" + }, + "windowsHelloConsentMessage": { + "message": "Bitwarden ellenőrzés." + }, + "unlockWithTouchId": { + "message": "Feloldás Touch ID segítségével" + }, + "touchIdConsentMessage": { + "message": "Bitwarden feloldás" + }, + "noAutoPromptWindowsHello": { + "message": "Indításkor ne kérje a Windows Hello alkalmazást." + }, + "noAutoPromptTouchId": { + "message": "Indításkor ne kérje a Touch ID alkalmazást." + }, + "lockWithMasterPassOnRestart": { + "message": "Lezárás mesterjelszóval újraindításkor" + }, + "preferences": { + "message": "Beállítások" + }, + "enableMenuBar": { + "message": "Menüsáv ikon engedélyezése" + }, + "enableMenuBarDesc": { + "message": "Mindig jelenjen meg az ikon a menüsávban." + }, + "hideToMenuBar": { + "message": "Elrejtés a menüsávon" + }, + "selectOneCollection": { + "message": "Legalább egy gyűjteményt ki kell választani." + }, + "premiumUpdated": { + "message": "Megtörtént az áttérés a Prémium verzióra." + }, + "restore": { + "message": "Visszaállítás" + }, + "premiumManageAlertAppStore": { + "message": "A feliratkozás az App Store szolgáltatásból kezelhető Felkeressük az App Store-t most?" + }, + "legal": { + "message": "Jogi információk", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Használati feltételek" + }, + "privacyPolicy": { + "message": "Adatvédelem" + }, + "unsavedChangesConfirmation": { + "message": "Biztos a kilépés? A kilépés esetén az aktuális információ nem kerül mentésre." + }, + "unsavedChangesTitle": { + "message": "Mentetlen változások" + }, + "clone": { + "message": "Klónozás" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Egy vagy több szervezeti szabály érinti a generátor beállításokat." + }, + "vaultTimeoutAction": { + "message": "Széf időkifutás művelet" + }, + "vaultTimeoutActionLockDesc": { + "message": "Egy zárolt széfnél újra meg kell adni a mesterjelszót az ismételt hozzáféréshez." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A lezárt széfnél szükséges az újra hitelesítés az ismételt eléréshez." + }, + "lock": { + "message": "Lezárás", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Lomtár", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Keresés a lomtárban" + }, + "permanentlyDeleteItem": { + "message": "Az elem végleges törlése" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Biztosan véglegesen törlésre kerüljön ez az elem?" + }, + "permanentlyDeletedItem": { + "message": "Elem végleges törlése" + }, + "restoreItem": { + "message": "Elem visszaállítása" + }, + "restoreItemConfirmation": { + "message": "Biztosan visszaállításra kerüljön ezt az elem?" + }, + "restoredItem": { + "message": "Visszaállított elem" + }, + "permanentlyDelete": { + "message": "Végleges törlés" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Kijelentkezve az összes széf elérés eltávolításra kerül és webes hitelesítésre van szükség az időkifutás után. Biztosan szeretnénk használni ezt a beállítást?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Időkifutás művelet megerősítés" + }, + "enterpriseSingleSignOn": { + "message": "Vállalati önálló bejelentkezés" + }, + "setMasterPassword": { + "message": "Mesterjelszó beállítása" + }, + "ssoCompleteRegistration": { + "message": "Az SSO-val történő bejelentkezés befejezéséhez mesterjelszót kell beállítani a széf eléréséhez és védelméhez." + }, + "newMasterPass": { + "message": "Új mesterjelszó" + }, + "confirmNewMasterPass": { + "message": "Új mesterjelszó megerősítése" + }, + "masterPasswordPolicyInEffect": { + "message": "Egy vagy több szervezeti rendszabályhoz mesterjelszó szükséges a következő követelmények megfeleléséhez:" + }, + "policyInEffectMinComplexity": { + "message": "Minimális összetettségi pontszám $SCORE$ értékhez", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimális hossz $LENGTH$ értékből", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Egy vagy több nagybetűs karaktert tartalmaz" + }, + "policyInEffectLowercase": { + "message": "Egy vagy több kisbetűs karaktert tartalmaz" + }, + "policyInEffectNumbers": { + "message": "Egy vagy több számot tartalmaz" + }, + "policyInEffectSpecial": { + "message": "$CHARS$ speciális karakterekből egyet vagy többet tartalmaz", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Az új mesterjelszó nem felel meg a szabály követelményeknek." + }, + "acceptPolicies": { + "message": "A kapcsoló bekapcsolásával egyetértünk a következőkkel:" + }, + "acceptPoliciesError": { + "message": "A szolgáltatási feltételeket és az adatvédelmi irányelveket nem vették figyelembe." + }, + "enableBrowserIntegration": { + "message": "Böngésző integráció engedélyezése" + }, + "enableBrowserIntegrationDesc": { + "message": "A böngésző integrációt a biometrikus adatokhoz használják a böngészőben." + }, + "browserIntegrationMasOnlyTitle": { + "message": "A böngésző integráció nem támogatott." + }, + "browserIntegrationMasOnlyDesc": { + "message": "Sajnos a böngésző integrációt egyelőre csak a Mac App Store verzió támogatja." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "A böngésző integráció nem támogatott." + }, + "browserIntegrationWindowsStoreDesc": { + "message": "A böngésző integrációt egyelőre csak a Windows Store verzió támogatja." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Ellenőrzés kérése a böngésző integrációhoz" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Engedélyezzünk további biztonsági réteget ujjlenyomat kifejezés-hitelesítés kérésével az asztal és a böngésző közötti kapcsolat létrehozásakor. Ha engedélyezve van, ez minden egyes kapcsolat létrehozásakor felhasználói beavatkozást és ellenőrzést igényel." + }, + "approve": { + "message": "Jóváhagyás" + }, + "verifyBrowserTitle": { + "message": "Böngésző kapcsolat ellenőrzése" + }, + "verifyBrowserDesc": { + "message": "Ellenőrizzük, hogy a bemutatott ujjlenyomat megegyezik a böngésző kiterjesztésében megjelenített ujjlenyomattal." + }, + "biometricsNotEnabledTitle": { + "message": "A biometrikus adatok nincsenek engedélyezve." + }, + "biometricsNotEnabledDesc": { + "message": "A böngésző biometrikus adataihoz először az asztali biometrikus adatokat kell engedélyezni a beállításokban." + }, + "personalOwnershipSubmitError": { + "message": "Egy vállalati házirend miatt korlátozásra került az elemek személyes tárolóba történő mentése. Módosítsuk a Tulajdon opciót egy szervezetre és válasszunk az elérhető gyűjtemények közül." + }, + "hintEqualsPassword": { + "message": "A jelszavas tipp nem lehet azonos a jelszóval." + }, + "personalOwnershipPolicyInEffect": { + "message": "A szervezeti házirend befolyásolja a tulajdonosi opciókat." + }, + "allSends": { + "message": "Összes küldés", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fájl" + }, + "sendTypeText": { + "message": "Szöveg" + }, + "searchSends": { + "message": "Küldés keresése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Küldés szerkesztése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Saját széf" + }, + "text": { + "message": "Szöveg" + }, + "deletionDate": { + "message": "Törlési dátum" + }, + "deletionDateDesc": { + "message": "A Send véglegesen törlésre kerül a meghatározott időpontban.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Lejárati dátum" + }, + "expirationDateDesc": { + "message": "Beállítva a hozzáférés ehhez a Küldéshez lejár a meghatározott időpontban.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximális elérési szám" + }, + "maxAccessCountDesc": { + "message": "Beállítva a Küldés elérhetetlen lesz a meghatározott hozzáférések számának elérése után.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Aktuális elérési szám" + }, + "disableSend": { + "message": "A Küldés letiltásával mindenki hozzáférése megvonható.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Opcionálissan egy jelszó kérhető a felhasználóktól a Küldés eléréséhez.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Személyes megjegyzések erről a Küldésről.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Hivatkozás küldése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Hivatkozás küldése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "A Küldés elérésekor alapértelmezés szerint a szöveg elrejtése", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "A küldés létrejött", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "A küldés szerkesztésre került", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "A küldés törlésre került", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Új jelszó" + }, + "whatTypeOfSend": { + "message": "Milyen típusú ez a küldés?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "A küldés létrejött.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "A küldendő szöveg." + }, + "sendFileDesc": { + "message": "A küldendő fájl." + }, + "days": { + "message": "$DAYS$ nap", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 nap" + }, + "custom": { + "message": "Egyedi" + }, + "deleteSendConfirmation": { + "message": "Biztosan törlésre kerüljön ez a küldés?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Hivatkozás küldése másolás a vágólapra", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "A hivatkozás másolása a Küldés megosztásához a vágólapra mentéskor." + }, + "sendDisabled": { + "message": "A küldés kikapcsolásra került", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "A vállalati házirend miatt csak egy meglévő Küldés törölhető.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Hivatkozás másolása" + }, + "disabled": { + "message": "Letiltva" + }, + "maxAccessCountReached": { + "message": "A maximális hozzáférések száma elérésre került." + }, + "expired": { + "message": "Lejárt" + }, + "pendingDeletion": { + "message": "Függőben lévő törlés" + }, + "webAuthnAuthenticate": { + "message": "WebAutn hitelesítés" + }, + "hideEmail": { + "message": "Saját email cím elrejtése a címzettek elől." + }, + "sendOptionsPolicyInEffect": { + "message": "Egy vagy több szervezeti szabály érinti a Send opciókat." + }, + "emailVerificationRequired": { + "message": "E-mail hitelesítés szükséges" + }, + "emailVerificationRequiredDesc": { + "message": "A funkció használatához ellenőrizni kell az email címet." + }, + "passwordPrompt": { + "message": "Mesterjelszó ismételt megadás" + }, + "passwordConfirmation": { + "message": "Mesterjelszó megerősítése" + }, + "passwordConfirmationDesc": { + "message": "Ez a művelet védett. A folytatásért ismételten meg kell adni a mesterjelszőt az személyazonosság ellenőrzéséhez." + }, + "updatedMasterPassword": { + "message": "A mesterjelszó frisstésre került." + }, + "updateMasterPassword": { + "message": "Mesterjelszó frissítése" + }, + "updateMasterPasswordWarning": { + "message": "A szervezet egyik adminisztrátora nemrég megváltoztatta a mesterjelszót. A széf eléréséhez most frissíteni kell a mesterjelszót. Továbblépéskor kijelentkezés történik a jelenlegi munkamenetből és újra be kell jelentkezni. Ha van aktív munkamenet más eszközön, az még legfeljebb egy óráig aktív maradhat." + }, + "hours": { + "message": "Óra" + }, + "minutes": { + "message": "Perc" + }, + "vaultTimeoutPolicyInEffect": { + "message": "A szervezeti házirendek hatással vannak a széf időkorlátjára. A széf időkorlátja legfeljebb $HOURS$ óra és $MINUTES$ perc lehet.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "A széf időkorlátja túllépi a szervezet által beállított korlátozást." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatikus regisztráció" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ennek a szervezetnek van egy vállalati házirendje, amely automatikusan regisztrál a jelszó alaphelyzetbe állítására. A regisztráció lehetővé teszi a szervezet adminisztrátorainak a mesterjelszó megváltoztatását." + }, + "vaultExportDisabled": { + "message": "A széf exportálás nem engedélyezett." + }, + "personalVaultExportPolicyInEffect": { + "message": "Egy vagy több szervezeti házirend tiltja a személyes széf exportálását." + }, + "addAccount": { + "message": "Fiók hozzáadása" + }, + "removeMasterPassword": { + "message": "Mesterjelszó eltávolítása" + }, + "removedMasterPassword": { + "message": "A mesterjelszó eltávolításra került." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ jelenleg saját tárolású aláíráskulcsú SSO szervert használ. A mesterjelszó a továbbiakban nem szükséges a szervezeti tagsági bejelentkezéshez.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Szervezet elhagyása" + }, + "leaveOrganizationConfirmation": { + "message": "Biztosan kilépünk ebből a szervezetből?" + }, + "leftOrganization": { + "message": "Megtörtént a kilépés a szervezetből." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nem érhető el a kulcskapcsoló. Próbáljuk újra később." + }, + "lockAllVaults": { + "message": "Összes széf lezárása" + }, + "accountLimitReached": { + "message": "Egyszerre legfeljebb 5 fiókba lehet bejelentkezni." + }, + "accountPreferences": { + "message": "Előbeállítások" + }, + "appPreferences": { + "message": "Alkalmazás beállítások (összes fiók)" + }, + "accountSwitcherLimitReached": { + "message": "A fiók korlát elérésre került. Kijelentkezés egy fiókból másik hozzáadásához." + }, + "settingsTitle": { + "message": "Alkalmezás beállítások $EMAIL$ címhez", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Fiók váltása" + }, + "options": { + "message": "Opciók" + }, + "sessionTimeout": { + "message": "A munkamenet lejárt. Lépjünk vissza és próbáljunk újra bejelentkezni." + }, + "exportingPersonalVaultTitle": { + "message": "Személyes széf exportálása" + }, + "exportingPersonalVaultDescription": { + "message": "Csak $EMAIL$ email címmel társított személyes széf elemek kerülnek exportálásra. Ebbe nem kerülnek be a szervezeti széf elemek.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generátor" + }, + "whatWouldYouLikeToGenerate": { + "message": "Mit szeretnénk generálni?" + }, + "passwordType": { + "message": "Jelszótípus" + }, + "regenerateUsername": { + "message": "Felhasználónév ismételt geneálása" + }, + "generateUsername": { + "message": "Felhasználónév generálása" + }, + "usernameType": { + "message": "Felhasználónév típusa" + }, + "plusAddressedEmail": { + "message": "További címzési email cím" + }, + "plusAddressedEmailDesc": { + "message": "Használjuk az email cím szolgáltató alcímzési képességeit." + }, + "catchallEmail": { + "message": "Összes email cím begyűjtése" + }, + "catchallEmailDesc": { + "message": "Használjuk a tartomány konfigurált összes befogási bejövő postaládát." + }, + "random": { + "message": "Véletlen" + }, + "randomWord": { + "message": "Véletlenszerű szó" + }, + "websiteName": { + "message": "Webhelynév" + }, + "service": { + "message": "Szolgáltatás" + } +} diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json new file mode 100644 index 0000000000..8fdd59cfd8 --- /dev/null +++ b/apps/desktop/src/locales/id/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Saring" + }, + "allItems": { + "message": "Semua Item" + }, + "favorites": { + "message": "Favorit" + }, + "types": { + "message": "Tipe" + }, + "typeLogin": { + "message": "Masuk" + }, + "typeCard": { + "message": "Kartu" + }, + "typeIdentity": { + "message": "Identitas" + }, + "typeSecureNote": { + "message": "Catatan yang aman" + }, + "folders": { + "message": "Folder" + }, + "collections": { + "message": "Koleksi" + }, + "searchVault": { + "message": "Cari brankas" + }, + "addItem": { + "message": "Tambah Item" + }, + "shared": { + "message": "Dibagikan" + }, + "share": { + "message": "Berbagi" + }, + "moveToOrganization": { + "message": "Pindah ke Organisasi" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ pindah ke $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Pilihlah sebuah organisasi yang Anda ingin memindahkan item ini. Memindahkan berarti memberikan kepemilikan kepada organisasi tersebut. Anda tidak akan lagi menjadi pemilik item ini." + }, + "attachments": { + "message": "Lampiran" + }, + "viewItem": { + "message": "Lihat Item" + }, + "name": { + "message": "Nama" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "URl Baru" + }, + "username": { + "message": "Nama Pengguna" + }, + "password": { + "message": "Kata Sandi" + }, + "passphrase": { + "message": "Frasa sandi" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Alamat Email" + }, + "verificationCodeTotp": { + "message": "Kode Verifikasi (TOTP)" + }, + "website": { + "message": "Situs Web" + }, + "notes": { + "message": "Catatan" + }, + "customFields": { + "message": "Kolom Ubahsuai" + }, + "launch": { + "message": "Meluncurkan" + }, + "copyValue": { + "message": "Salin Nilai", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimalkan saat menyalin ke clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimalkan saat menyalin data item ke clipboard." + }, + "toggleVisibility": { + "message": "Alihkan Visibilitas" + }, + "toggleCollapse": { + "message": "Buka Tutup", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Nama Pemilik Kartu" + }, + "number": { + "message": "Nomor" + }, + "brand": { + "message": "Merek" + }, + "expiration": { + "message": "Masa Berlaku" + }, + "securityCode": { + "message": "Kode Keamanan" + }, + "identityName": { + "message": "Nama Identitas" + }, + "company": { + "message": "Perusahaan" + }, + "ssn": { + "message": "Nomor Jaminan Sosial" + }, + "passportNumber": { + "message": "Nomor Paspor" + }, + "licenseNumber": { + "message": "Nomor Lisensi" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telepon" + }, + "address": { + "message": "Alamat" + }, + "premiumRequired": { + "message": "Memerlukan Keanggotaan Premium" + }, + "premiumRequiredDesc": { + "message": "Keanggotaan premium diperlukan untuk menggunakan fitur ini." + }, + "errorOccurred": { + "message": "Terjadi kesalahan." + }, + "error": { + "message": "Galat" + }, + "january": { + "message": "Januari" + }, + "february": { + "message": "Februari" + }, + "march": { + "message": "Maret" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Mei" + }, + "june": { + "message": "Juni" + }, + "july": { + "message": "Juli" + }, + "august": { + "message": "Agustus" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "Desember" + }, + "ex": { + "message": "contoh", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Panggilan" + }, + "mr": { + "message": "Tuan" + }, + "mrs": { + "message": "Nyonya" + }, + "ms": { + "message": "Nona" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Bulan Kedaluwarsa" + }, + "expirationYear": { + "message": "Tahun Kedaluwarsa" + }, + "select": { + "message": "Pilih" + }, + "other": { + "message": "Lainnya" + }, + "generatePassword": { + "message": "Buat Kata Sandi" + }, + "type": { + "message": "Tipe" + }, + "firstName": { + "message": "Nama Depan" + }, + "middleName": { + "message": "Nama Tengah" + }, + "lastName": { + "message": "Nama Belakang" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Alamat 1" + }, + "address2": { + "message": "Alamat 2" + }, + "address3": { + "message": "Alamat 3" + }, + "cityTown": { + "message": "Kota / Kabupaten" + }, + "stateProvince": { + "message": "Negara Bagian / Provinsi" + }, + "zipPostalCode": { + "message": "Kode Pos" + }, + "country": { + "message": "Negara" + }, + "save": { + "message": "Simpan" + }, + "cancel": { + "message": "Batal" + }, + "delete": { + "message": "Hapus" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Kunci Autentikasi (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "Kolom Ubahsuai Baru" + }, + "value": { + "message": "Nilai" + }, + "dragToSort": { + "message": "Geser untuk sortir" + }, + "cfTypeText": { + "message": "Teks" + }, + "cfTypeHidden": { + "message": "Tersembunyi" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Hapus" + }, + "nameRequired": { + "message": "Nama diperlukan." + }, + "addedItem": { + "message": "Item yang Ditambahkan" + }, + "editedItem": { + "message": "Item yang Diedit" + }, + "deleteItem": { + "message": "Hapus Item" + }, + "deleteFolder": { + "message": "Hapus Folder" + }, + "deleteAttachment": { + "message": "Hapus Lampiran" + }, + "deleteItemConfirmation": { + "message": "Anda yakin Anda ingin menghapus item ini?" + }, + "deletedItem": { + "message": "Item yang Dihapus" + }, + "overwritePasswordConfirmation": { + "message": "Anda yakin ingin menimpa sandi saat ini?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Tidak Ada Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Tambah Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Buat Ulang Sandi" + }, + "copyPassword": { + "message": "Salin Kata Sandi" + }, + "copyUri": { + "message": "Salin URI" + }, + "copyVerificationCodeTotp": { + "message": "Salin Kode Verifikasi (TOTP)" + }, + "length": { + "message": "Panjang" + }, + "numWords": { + "message": "Jumlah kata" + }, + "wordSeparator": { + "message": "Pemisah Kata" + }, + "capitalize": { + "message": "Gunakan Huruf Besar", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Termasuk angka" + }, + "close": { + "message": "Tutup" + }, + "minNumbers": { + "message": "Angka Minimum" + }, + "minSpecial": { + "message": "Karakter Khusus Minimum", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Hindari Karakter Ambigu" + }, + "searchCollection": { + "message": "Cari koleksi" + }, + "searchFolder": { + "message": "Cari folder" + }, + "searchFavorites": { + "message": "Cari favorit" + }, + "searchType": { + "message": "Search type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Tambah Lampiran Baru" + }, + "deletedAttachment": { + "message": "Lampiran dihapus" + }, + "deleteAttachmentConfirmation": { + "message": "Anda yakin ingin menghapus lampiran ini?" + }, + "attachmentSaved": { + "message": "Lampiran telah disimpan." + }, + "file": { + "message": "Berkas" + }, + "selectFile": { + "message": "Pilih berkas." + }, + "maxFileSize": { + "message": "Ukuran berkas maksimal adalah 500 MB." + }, + "updateKey": { + "message": "Anda tidak dapat menggunakan fitur ini sampai Anda memperbarui kunci enkripsi Anda." + }, + "editedFolder": { + "message": "Folder yang di Edit" + }, + "addedFolder": { + "message": "Tambah Folder" + }, + "deleteFolderConfirmation": { + "message": "Anda yakin Anda ingin menghapus folder ini?" + }, + "deletedFolder": { + "message": "Folder yang terhapus" + }, + "loginOrCreateNewAccount": { + "message": "Masuk atau buat akun baru untuk mengakses brankas Anda." + }, + "createAccount": { + "message": "Buat Akun" + }, + "logIn": { + "message": "Masuk" + }, + "submit": { + "message": "Kirim" + }, + "masterPass": { + "message": "Sandi Utama" + }, + "masterPassDesc": { + "message": "Kata sandi utama adalah kata sandi yang Anda gunakan untuk mengakses brankas Anda. Sangat penting bahwa Anda tidak lupa kata sandi utama Anda. Tidak ada cara untuk memulihkan kata sandi jika Anda melupakannya." + }, + "masterPassHintDesc": { + "message": "Petunjuk kata sandi utama dapat membantu Anda mengingat kata sandi Anda jika Anda melupakannya." + }, + "reTypeMasterPass": { + "message": "Ketik Ulang Sandi Utama" + }, + "masterPassHint": { + "message": "Petunjuk Kata Sandi Utama (pilihan)" + }, + "settings": { + "message": "Setelan" + }, + "passwordHint": { + "message": "Petunjuk Sandi" + }, + "enterEmailToGetHint": { + "message": "Masukkan email akun Anda untuk menerima pentunjuk sandi utama Anda." + }, + "getMasterPasswordHint": { + "message": "Dapatkan petunjuk sandi utama" + }, + "emailRequired": { + "message": "Alamat email diperlukan." + }, + "invalidEmail": { + "message": "Alamat email tidak valid." + }, + "masterPassRequired": { + "message": "Sandi utama diperlukan." + }, + "masterPassLength": { + "message": "Kata sandi utama sedikitnya harus 8 karakter." + }, + "masterPassDoesntMatch": { + "message": "Konfirmasi sandi utama tidak cocok." + }, + "newAccountCreated": { + "message": "Akun baru Anda telah dibuat! Sekarang Anda bisa masuk." + }, + "masterPassSent": { + "message": "Kami telah mengirimi Anda email dengan petunjuk sandi utama Anda." + }, + "unexpectedError": { + "message": "Terjadi kesalahan yang tak diduga." + }, + "itemInformation": { + "message": "Informasi Item" + }, + "noItemsInList": { + "message": "Tidak ada item yang dapat dicantumkan." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Kode Verifikasi" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Kode verifikasi diperlukan." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Lanjutkan" + }, + "enterVerificationCodeApp": { + "message": "Masukkan 6 digit kode verifikasi dari aplikasi autentikasi Anda." + }, + "enterVerificationCodeEmail": { + "message": "Masukkan 6 digit kode verifikasi yang dikirim melalui email ke $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Email verifikasi dikirim ke $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Ingat saya" + }, + "sendVerificationCodeEmailAgain": { + "message": "Kirim ulang email kode verifikasi" + }, + "useAnotherTwoStepMethod": { + "message": "Gunakan metode masuk dua langkah lainnya" + }, + "insertYubiKey": { + "message": "Masukkan YubiKey Anda ke port USB komputer Anda, lalu sentuh tombol nya." + }, + "insertU2f": { + "message": "Masukkan kunci keamanan ke port USB komputer Anda. Jika ada tombolnya, tekanlah." + }, + "recoveryCodeDesc": { + "message": "Kehilangan akses ke semua penyedia dua faktor Anda? Gunakan kode pemulihan untuk menonaktifkan semua penyedia dua faktor dari akun Anda." + }, + "recoveryCodeTitle": { + "message": "Kode Pemulihan" + }, + "authenticatorAppTitle": { + "message": "Aplikasi Autentikasi" + }, + "authenticatorAppDesc": { + "message": "Gunakan aplikasi autentikasi (seperti Authy atau Google Authenticator) untuk menghasilkan kode verifikasi berbasis waktu.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Kunci Keamanan OTP YubiKey" + }, + "yubiKeyDesc": { + "message": "Gunakan YubiKey untuk mengakses akun Anda. Bekerja dengan YubiKey 4, 4 Nano, 4C, dan peranti NEO." + }, + "duoDesc": { + "message": "Verifikasi dengan Duo Security menggunakan aplikasi Duo Mobile, SMS, panggilan telepon, atau kunci keamanan U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifikasi dengan Duo Security untuk organisasi anda dengan menggunakan Aplikasi Duo Mobile, SMS, panggilan telepon atau kunci keamanan U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Gunakan kunci yang mendukung WebAUthn untuk mengakses akun anda." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Kode verifikasi akan dikirim via email kepada Anda." + }, + "loginUnavailable": { + "message": "Info Masuk Tidak Tersedia" + }, + "noTwoStepProviders": { + "message": "Akun ini mengaktifkan info masuk dua langkah, namun, tidak satupun dari penyedia dua langkah yang dikonfigurasi didukung oleh perangkat ini." + }, + "noTwoStepProviders2": { + "message": "Silahkan tambahkan penyedia tambahan yang baik didukung di perangkat (seperti aplikasi authenticator)." + }, + "twoStepOptions": { + "message": "Pilihan Info Masuk Dua Langkah" + }, + "selfHostedEnvironment": { + "message": "Lingkungan Hos-mandiri" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premise hosted bitwarden installation." + }, + "customEnvironment": { + "message": "Lingkungan Kustom" + }, + "customEnvironmentFooter": { + "message": "Untuk pengguna lanjutan. Anda dapat menentukan basis dari URL untuk setiap layanan mandiri." + }, + "baseUrl": { + "message": "URL Server" + }, + "apiUrl": { + "message": "URL Server API" + }, + "webVaultUrl": { + "message": "URL Server Brankas Web" + }, + "identityUrl": { + "message": "URL Server Identitas" + }, + "notificationsUrl": { + "message": "Pemberitahuan URL Server" + }, + "iconsUrl": { + "message": "URL Server Ikon" + }, + "environmentSaved": { + "message": "Lingkungan dari URL sudah tersimpan." + }, + "ok": { + "message": "Oke" + }, + "yes": { + "message": "Ya" + }, + "no": { + "message": "Tidak" + }, + "overwritePassword": { + "message": "Timpa Sandi" + }, + "learnMore": { + "message": "Pelajari lebih lanjut" + }, + "featureUnavailable": { + "message": "Fitur Tidak Tersedia" + }, + "loggedOut": { + "message": "Keluar" + }, + "loginExpired": { + "message": "Sesi masuk Anda telah berakhir." + }, + "logOutConfirmation": { + "message": "Anda yakin ingin keluar?" + }, + "logOut": { + "message": "Keluar" + }, + "addNewLogin": { + "message": "Tambahkan Info Masuk Baru" + }, + "addNewItem": { + "message": "Tambahkan Item Baru" + }, + "addNewFolder": { + "message": "Tambahkan Folder Baru" + }, + "view": { + "message": "Tampilan" + }, + "account": { + "message": "Akun" + }, + "loading": { + "message": "Memuat..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Pembuat Kata Sandi" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Buat Laporan Masalah" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Ikuti Kami" + }, + "syncVault": { + "message": "Sinkronisasi Brankas" + }, + "changeMasterPass": { + "message": "Ubah Kata Sandi Utama" + }, + "changeMasterPasswordConfirmation": { + "message": "Anda dapat mengubah kata sandi utama Anda di brankas web bitwarden.com. Anda ingin mengunjungi situs web sekarang?" + }, + "fingerprintPhrase": { + "message": "Frase Fingerprint", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Frase fingerprint milik Anda", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Buka Brankas Web" + }, + "getMobileApp": { + "message": "Dapatkan Aplikasi Seluler" + }, + "getBrowserExtension": { + "message": "Dapatkan Ekstensi Peramban" + }, + "syncingComplete": { + "message": "Sinkronisasi selesai" + }, + "syncingFailed": { + "message": "Gagal menyinkronkan" + }, + "yourVaultIsLocked": { + "message": "Brankas Anda terkunci. Verifikasi sandi utama Anda untuk melanjutkan." + }, + "unlock": { + "message": "Buka" + }, + "loggedInAsOn": { + "message": "Telah log in sebagai $EMAIL$ di $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Sandi utama tidak valid" + }, + "twoStepLoginConfirmation": { + "message": "Info masuk dua langkah membuat akun Anda lebih aman dengan mengharuskan Anda memverifikasi info masuk Anda dengan peranti lain seperti kode keamanan, aplikasi autentikasi, SMS, panggilan telepon, atau email. Info masuk dua langkah dapat diaktifkan di brankas web bitwarden.com. Anda ingin mengunjungi situs web sekarang?" + }, + "twoStepLogin": { + "message": "Info masuk dua langkah" + }, + "vaultTimeout": { + "message": "Batas Waktu Brankas" + }, + "vaultTimeoutDesc": { + "message": "Pilih kapan brankas Anda akan timeout dan melakukan tindakan yang dipilih." + }, + "immediately": { + "message": "Segera" + }, + "tenSeconds": { + "message": "10 detik" + }, + "twentySeconds": { + "message": "20 detik" + }, + "thirtySeconds": { + "message": "30 detik" + }, + "oneMinute": { + "message": "1 menit" + }, + "twoMinutes": { + "message": "2 menit" + }, + "fiveMinutes": { + "message": "5 menit" + }, + "fifteenMinutes": { + "message": "15 menit" + }, + "thirtyMinutes": { + "message": "30 menit" + }, + "oneHour": { + "message": "1 jam" + }, + "fourHours": { + "message": "4 jam" + }, + "onIdle": { + "message": "Saat sistem menganggur" + }, + "onSleep": { + "message": "Saat sistem tidur" + }, + "onLocked": { + "message": "Sistem kunci" + }, + "onRestart": { + "message": "Pada Mulai Ulang" + }, + "never": { + "message": "Tidak pernah" + }, + "security": { + "message": "Keamanan" + }, + "clearClipboard": { + "message": "Hapus Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Secara otomatis menghapus nilai yang disalin dari clipboard Anda.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Nonaktifkan Ikon Situs Web" + }, + "disableFaviconDesc": { + "message": "Ikon Situs Web menyediakan gambar yang dikenali di sebelah item info masuk di brankas Anda." + }, + "enableMinToTray": { + "message": "Kecilkan ke Ikon Baki" + }, + "enableMinToTrayDesc": { + "message": "Ketika jendela di perkecil, tampilkan ikon di dalam sistem baki sebagai gantinya." + }, + "enableMinToMenuBar": { + "message": "Minimalkan ke bilah menu" + }, + "enableMinToMenuBarDesc": { + "message": "Saat meminimalkan jendela, tampilkan ikon di bilah menu sebagai gantinya." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "Saat menutup jendela, tampilkan ikon di baki sistem sebagai gantinya." + }, + "enableCloseToMenuBar": { + "message": "Dekat dengan bilah menu" + }, + "enableCloseToMenuBarDesc": { + "message": "Saat menutup jendela, tampilkan ikon di bilah menu sebagai gantinya." + }, + "enableTray": { + "message": "Aktifkan Ikon Baki" + }, + "enableTrayDesc": { + "message": "Selalu tampilkan ikon di dalam baki sistem." + }, + "startToTray": { + "message": "Mulai Pada Baki Sistem" + }, + "startToTrayDesc": { + "message": "Saat aplikasi pertama kali dijalankan, hanya tampilkan ikon di baki sistem." + }, + "startToMenuBar": { + "message": "Mulai menu bar" + }, + "startToMenuBarDesc": { + "message": "Saat aplikasi pertama kali dijalankan, hanya tampilkan ikon di bilah menu." + }, + "openAtLogin": { + "message": "Mulai secara otomatis saat login" + }, + "openAtLoginDesc": { + "message": "Jalankan aplikasi Bitwarden Desktop secara otomatis saat login." + }, + "alwaysShowDock": { + "message": "Selalu tampilkan di Dock" + }, + "alwaysShowDockDesc": { + "message": "Tampilkan ikon Bitwarden di Dock bahkan saat diminimalkan ke bilah menu." + }, + "confirmTrayTitle": { + "message": "Konfirmasi nonaktifkan baki" + }, + "confirmTrayDesc": { + "message": "Menonaktifkan pengaturan ini juga akan menonaktifkan semua pengaturan terkait baki lainnya." + }, + "language": { + "message": "Bahasa" + }, + "languageDesc": { + "message": "Ubah bahasa yang di gunakan oleh aplikasi. Mulai Ulang diperlukan." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Ubah tema warna aplikasi." + }, + "dark": { + "message": "Gelap", + "description": "Dark color" + }, + "light": { + "message": "Terang", + "description": "Light color" + }, + "copy": { + "message": "Salin", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Periksa Pembaruan" + }, + "version": { + "message": "Versi $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Mulai ulang untuk Perbarui" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart Bitwarden to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Pembaruan Tersedia" + }, + "updateAvailableDesc": { + "message": "Pembaruan telah di temukan. Apakah anda ingin mengunduhnya sekarang?" + }, + "restart": { + "message": "Mulai Ulang" + }, + "later": { + "message": "Nanti" + }, + "noUpdatesAvailable": { + "message": "Tidak ada update saat ini. Kamu menggunakan versi terbaru." + }, + "updateError": { + "message": "Kesalahan pada Pembaruan" + }, + "unknown": { + "message": "Tidak diketahui" + }, + "copyUsername": { + "message": "Salin Nama Pengguna" + }, + "copyNumber": { + "message": "Salin Nomor", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Salin Kode Keamanan", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Keanggotaan Premium" + }, + "premiumManage": { + "message": "Kelola Keanggotaan" + }, + "premiumManageAlert": { + "message": "Anda dapat mengelola keanggotaan anda di Brankas Web bitwarden.com. Apakah anda ingin mengunjungi situs web itu sekarang?" + }, + "premiumRefresh": { + "message": "Segarkan Keanggotaan" + }, + "premiumNotCurrentMember": { + "message": "Anda saat ini bukanlah pengguna Premium." + }, + "premiumSignUpAndGet": { + "message": "Daftar untuk keanggotaan Premium dan dapatkan:" + }, + "premiumSignUpStorage": { + "message": "1 GB penyimpanan berkas yang dienkripsi." + }, + "premiumSignUpTwoStep": { + "message": "Pilihan info masuk dua langkah tambahan seperti YubiKey, FIDO U2F, dan Duo." + }, + "premiumSignUpReports": { + "message": "Kebersihan kata sandi, kesehatan akun, dan laporan pelanggaran data untuk menjaga brankas Anda tetap aman." + }, + "premiumSignUpTotp": { + "message": "Pembuat kode verifikasi TOTP (2FA) untuk masuk di brankas anda." + }, + "premiumSignUpSupport": { + "message": "Dukungan pelanggan Prioritas." + }, + "premiumSignUpFuture": { + "message": "Semua fitur Premium kedepannya. Selebihnya, akan segera hadir!" + }, + "premiumPurchase": { + "message": "Beli Premium" + }, + "premiumPurchaseAlert": { + "message": "Kamu bisa membeli keanggotaan Premium di Brankas Web bitwarden.com. Apakah kamu ingin mengunjungi situs web itu sekarang?" + }, + "premiumCurrentMember": { + "message": "Anda adalah anggota premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting bitwarden." + }, + "premiumPrice": { + "message": "Semua itu hanya $PRICE$/tahun!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Penyegaran selesai" + }, + "passwordHistory": { + "message": "Riwayat Kata Sandi" + }, + "clear": { + "message": "Bersihkan", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Tidak ada sandi yang dapat dicantumkan." + }, + "undo": { + "message": "Urungkan" + }, + "redo": { + "message": "Mengulangi" + }, + "cut": { + "message": "Potong", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Tempel", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Pilih Semua" + }, + "zoomIn": { + "message": "Perbesar" + }, + "zoomOut": { + "message": "Perkecil" + }, + "resetZoom": { + "message": "Set Ulang Zum" + }, + "toggleFullScreen": { + "message": "Aktif/nonaktifkan Layar Penuh" + }, + "reload": { + "message": "Muat ulang" + }, + "toggleDevTools": { + "message": "Aktif/nonaktifkan Alat Pengembang" + }, + "minimize": { + "message": "Perkecil", + "description": "Minimize window" + }, + "zoom": { + "message": "Zum" + }, + "bringAllToFront": { + "message": "Bawa Semua ke Depan", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Tentang Bitwarden" + }, + "services": { + "message": "Layanan" + }, + "hideBitwarden": { + "message": "Sembunyikan Bitwarden" + }, + "hideOthers": { + "message": "Sembunyikan Lainnya" + }, + "showAll": { + "message": "Tampilkan Semua" + }, + "quitBitwarden": { + "message": "Keluar dari Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ disalin", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Bantuan" + }, + "window": { + "message": "Jendela" + }, + "checkPassword": { + "message": "Periksa jika kata sandi telah terpapar." + }, + "passwordExposed": { + "message": "Kata sandi ini telah terpapar di dalam pelanggaran data selama $VALUE$ kali. Anda harus mengubahnya.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Kata sandi ini tidak di temukan di dalam pelanggaran data yang di kenal. Harusnya aman untuk di gunakan." + }, + "baseDomain": { + "message": "Basis domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Tepat" + }, + "startsWith": { + "message": "Mulai dengan" + }, + "regEx": { + "message": "Ekspresi umum", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Deteksi kecocokan", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Deteksi kecocokan standar", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Ubah Opsi" + }, + "organization": { + "message": "Organisasi", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Bawaan" + }, + "exit": { + "message": "Keluar" + }, + "showHide": { + "message": "Tampilkan / Sembunyikan", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Sembunyi ke Tray" + }, + "alwaysOnTop": { + "message": "Selalu di Atas", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Di perbarui", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Kata Sandi telah Diperbarui", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Ekspor Brankas" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "PERINGATAN", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Konfirmasi Ekspor Vault" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "Ekspor ini mengenkripsi data Anda menggunakan kunci enkripsi akun Anda. Jika Anda pernah merotasi kunci enkripsi akun Anda, Anda harus mengekspor lagi karena Anda tidak akan dapat mendekripsi file ekspor ini." + }, + "encExportAccountWarningDesc": { + "message": "Kunci enkripsi akun unik untuk setiap akun pengguna Bitwarden, jadi Anda tidak dapat mengimpor ekspor terenkripsi ke akun lain." + }, + "noOrganizationsList": { + "message": "Anda tidak berada dalam organisasi apapun. Organisasi memungkinkan Anda dengan aman berbagi item dengan pengguna lainnya." + }, + "noCollectionsInList": { + "message": "Tidak ada koleksi yang akan ditampilkan." + }, + "ownership": { + "message": "Kepemilikan" + }, + "whoOwnsThisItem": { + "message": "Pemilik item ini?" + }, + "strong": { + "message": "Kuat", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Baik", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Lemah", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Kata Sandi Utama Lemah" + }, + "weakMasterPasswordDesc": { + "message": "Sandi utama yang Anda pilih itu lemah. Anda harus menggunakan sandi yang kuat (atau sebuah passphrase) untuk melindungi akun Bitwarden Anda. Apakah Anda yakin ingin menggunakan sandi ini?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Buka kunci dengan PIN" + }, + "setYourPinCode": { + "message": "Setel kode PIN Anda untuk membuka kunci Bitwarden. Pengaturan PIN Anda akan diatur ulang jika Anda pernah keluar secara menyeluruh dari aplikasi." + }, + "pinRequired": { + "message": "Diperlukan kode PIN." + }, + "invalidPin": { + "message": "Kode PIN tidak valid." + }, + "unlockWithWindowsHello": { + "message": "Buka dengan Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verifikasi untuk Bitwarden." + }, + "unlockWithTouchId": { + "message": "Buka kunci dengan Touch ID" + }, + "touchIdConsentMessage": { + "message": "Verifikasi untuk Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "Jangan meminta Windows Hello waktu baru dinyalakan." + }, + "noAutoPromptTouchId": { + "message": "Jangan meminta Touch ID waktu baru dinyalakan." + }, + "lockWithMasterPassOnRestart": { + "message": "Kunci dengan kata sandi utama saat komputer dihidupkan ulang" + }, + "preferences": { + "message": "Preferensi" + }, + "enableMenuBar": { + "message": "Aktifkan Ikon Menu Bar" + }, + "enableMenuBarDesc": { + "message": "Selalu tampilkan ikon pada menu bar." + }, + "hideToMenuBar": { + "message": "Sembunyikan ke Menu Bar" + }, + "selectOneCollection": { + "message": "Anda harus memilih setidaknya satu koleksi." + }, + "premiumUpdated": { + "message": "Anda telah ditingkatkan ke premium." + }, + "restore": { + "message": "Pulihkan" + }, + "premiumManageAlertAppStore": { + "message": "Anda dapat mengelola langganan Anda di App Store. Apakah Anda ingin mengunjungi App Store sekarang?" + }, + "legal": { + "message": "Hukum", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Persyaratan Layanan" + }, + "privacyPolicy": { + "message": "Kebijakan Privasi" + }, + "unsavedChangesConfirmation": { + "message": "Anda yakin ingin keluar? Jika Anda keluar sekarang maka informasi Anda saat ini tidak akan disimpan." + }, + "unsavedChangesTitle": { + "message": "Perubahan Tidak Disimpan" + }, + "clone": { + "message": "Klon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi mempengaruhi pengaturan generator anda." + }, + "vaultTimeoutAction": { + "message": "Aksi Batas Waktu Penyimpanan" + }, + "vaultTimeoutActionLockDesc": { + "message": "Brankas yang terkunci membutuhkan Anda untuk memasukkan ulang password utama untuk mengakses kembali." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Brankas akan keluar dan Anda diminta untuk memasukkan password utama untuk mengakses kembali." + }, + "lock": { + "message": "Kunci", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Sampah", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Cari di sampah" + }, + "permanentlyDeleteItem": { + "message": "Hapus Item Permanen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Apakah Anda yakin ingin menghapus item ini secara permanen?" + }, + "permanentlyDeletedItem": { + "message": "Item Terhapus Permanen" + }, + "restoreItem": { + "message": "Pulihkan Item" + }, + "restoreItemConfirmation": { + "message": "Apakah Anda yakin ingin memulihkan item ini?" + }, + "restoredItem": { + "message": "Item Yang Dipulihkan" + }, + "permanentlyDelete": { + "message": "Hapus Secara Permanen" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Keluar akan menghapus semua akses ke Brankas Anda dan memerlukan otentikasi online setelah batas waktu yang ditentukan. Anda yakin ingin menggunakan pengaturan ini?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Konfirmasi Aksi Batas Waktu" + }, + "enterpriseSingleSignOn": { + "message": "Sistem Masuk Tunggal Perusahaan" + }, + "setMasterPassword": { + "message": "Atur Kata Sandi Utama" + }, + "ssoCompleteRegistration": { + "message": "Untuk menyelesaikan masuk dengan SSO, harap setel kata sandi utama untuk mengakses dan melindungi brankas Anda." + }, + "newMasterPass": { + "message": "Kata Sandi Utama Baru" + }, + "confirmNewMasterPass": { + "message": "Konfirmasi Kata Sandi Baru" + }, + "masterPasswordPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi memerlukan kata sandi utama Anda untuk memenuhi persyaratan berikut:" + }, + "policyInEffectMinComplexity": { + "message": "Skor kompleksitas minimum $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Panjang minimum $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Berisi satu atau lebih karakter huruf besar" + }, + "policyInEffectLowercase": { + "message": "Berisi satu atau lebih karakter huruf kecil" + }, + "policyInEffectNumbers": { + "message": "Berisi satu atau lebih angka" + }, + "policyInEffectSpecial": { + "message": "Berisi satu atau lebih karakter khusus berikut $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Kata sandi utama Anda yang baru tidak memenuhi persyaratan kebijakan." + }, + "acceptPolicies": { + "message": "Dengan mencentang kotak ini, anda menyetujui yang berikut:" + }, + "acceptPoliciesError": { + "message": "Persyaratan Layanan dan Kebijakan Privasi belum diakui." + }, + "enableBrowserIntegration": { + "message": "Aktifkan integrasi browser" + }, + "enableBrowserIntegrationDesc": { + "message": "Integrasi browser digunakan untuk biometrik di browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Integrasi browser tidak didukung" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Sayangnya integrasi browser hanya didukung di versi Mac App Store untuk saat ini." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Integrasi browser tidak didukung" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Sayangnya integrasi browser saat ini tidak didukung di versi Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Mewajibkan verifikasi untuk integrasi browser" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Aktifkan lapisan keamanan tambahan dengan meminta validasi frase sidik jari saat membuat tautan antara desktop dan browser Anda. Saat diaktifkan, ini membutuhkan intervensi pengguna dan verifikasi setiap kali koneksi dibuat." + }, + "approve": { + "message": "Menyetujui" + }, + "verifyBrowserTitle": { + "message": "Verifikasi koneksi browser" + }, + "verifyBrowserDesc": { + "message": "Harap pastikan sidik jari yang ditampilkan identik dengan sidik jari yang ditunjukkan di ekstensi browser." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrik tidak diaktifkan" + }, + "biometricsNotEnabledDesc": { + "message": "Biometrik browser mengharuskan biometrik desktop diaktifkan di pengaturan terlebih dahulu." + }, + "personalOwnershipSubmitError": { + "message": "Karena Kebijakan Perusahaan, Anda dilarang menyimpan item ke lemari besi pribadi Anda. Ubah opsi Kepemilikan ke organisasi dan pilih dari Koleksi yang tersedia." + }, + "hintEqualsPassword": { + "message": "Petunjuk kata sandi Anda tidak boleh sama dengan kata sandi Anda." + }, + "personalOwnershipPolicyInEffect": { + "message": "Kebijakan organisasi memengaruhi opsi kepemilikan Anda." + }, + "allSends": { + "message": "Semua Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Berkas" + }, + "sendTypeText": { + "message": "Teks" + }, + "searchSends": { + "message": "Pencarian Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Brankas Saya" + }, + "text": { + "message": "Teks" + }, + "deletionDate": { + "message": "Tanggal Penghapusan" + }, + "deletionDateDesc": { + "message": "Send akan dihapus secara permanen pada tanggal dan waktu yang ditentukan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Tanggal habis tempo" + }, + "expirationDateDesc": { + "message": "Jika disetel, akses ke Send ini akan berakhir pada tanggal dan waktu yang ditentukan.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Hitungan Akses Maksimum" + }, + "maxAccessCountDesc": { + "message": "Jika disetel, pengguna tidak dapat lagi mengakses Send ini setelah jumlah akses maksimum tercapai.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Hitungan Akses Saat Ini" + }, + "disableSend": { + "message": "Nonaktifkan Send ini sehingga tidak ada yang dapat mengaksesnya.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Secara opsional, minta kata sandi bagi pengguna untuk mengakses Send ini.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Catatan pribadi tentang Send ini.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Tautan Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Tautan Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Saat mengakses Send, sembunyikan teks secara default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send Dibuat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send diedit", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send Dihapus", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Kata Sandi baru" + }, + "whatTypeOfSend": { + "message": "Jenis Send apakah ini?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Buat Send Baru", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Teks yang ingin Anda kirim." + }, + "sendFileDesc": { + "message": "File yang ingin Anda kirim." + }, + "days": { + "message": "$DAYS$ hari", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 hari" + }, + "custom": { + "message": "Kustom" + }, + "deleteSendConfirmation": { + "message": "Anda yakin ingin menghapus Send ini?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Salin Send tautan ke papan klip", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Salin tautan untuk membagikan Send ke papan klip saya ini setelah disimpan." + }, + "sendDisabled": { + "message": "Send Dinonaktifkan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Karena kebijakan perusahaan, Anda hanya dapat menghapus Send yang sudah ada.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Salin tautan" + }, + "disabled": { + "message": "Dinonaktifkan" + }, + "maxAccessCountReached": { + "message": "Jumlah akses maksimum tercapai" + }, + "expired": { + "message": "Kedaluwarsa" + }, + "pendingDeletion": { + "message": "Penghapusan menunggu keputusan" + }, + "webAuthnAuthenticate": { + "message": "Autentikasi dengan WebAuthn" + }, + "hideEmail": { + "message": "Sembunyikan alamat surel saya dari penerima." + }, + "sendOptionsPolicyInEffect": { + "message": "Satu atau lebih kebijakan organisasi mempengaruhi pengaturan feature Send anda." + }, + "emailVerificationRequired": { + "message": "Verifikasi Email Diperlukan" + }, + "emailVerificationRequiredDesc": { + "message": "Anda harus mengkonfirmasi email anda untuk menggunakan fitur ini." + }, + "passwordPrompt": { + "message": "Master password ditanyakan kembali" + }, + "passwordConfirmation": { + "message": "Konfirmasi sandi utama" + }, + "passwordConfirmationDesc": { + "message": "Aksi ini terproteksi. Untuk melanjutkan, masukkan kembali sandi utama Anda untuk verifikasi identitas." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json new file mode 100644 index 0000000000..dd8eef1102 --- /dev/null +++ b/apps/desktop/src/locales/it/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtri" + }, + "allItems": { + "message": "Tutti gli elementi" + }, + "favorites": { + "message": "Preferiti" + }, + "types": { + "message": "Tipi" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Carta" + }, + "typeIdentity": { + "message": "Identità" + }, + "typeSecureNote": { + "message": "Nota sicura" + }, + "folders": { + "message": "Cartelle" + }, + "collections": { + "message": "Raccolte" + }, + "searchVault": { + "message": "Cerca nella cassaforte" + }, + "addItem": { + "message": "Aggiungi elemento" + }, + "shared": { + "message": "Condiviso" + }, + "share": { + "message": "Condividi" + }, + "moveToOrganization": { + "message": "Sposta in organizzazione" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ spostato in $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Scegli un'organizzazione in cui desideri spostare questo elemento. Spostare in un'organizzazione trasferisce la proprietà dell'elemento all'organizzazione. Non sarai più il proprietario diretto di questo elemento una volta spostato." + }, + "attachments": { + "message": "Allegati" + }, + "viewItem": { + "message": "Mostra elemento" + }, + "name": { + "message": "Nome" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nuovo URI" + }, + "username": { + "message": "Nome utente" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Frase segreta" + }, + "editItem": { + "message": "Modifica elemento" + }, + "emailAddress": { + "message": "Indirizzo email" + }, + "verificationCodeTotp": { + "message": "Codice di verifica (TOTP)" + }, + "website": { + "message": "Sito web" + }, + "notes": { + "message": "Note" + }, + "customFields": { + "message": "Campi personalizzati" + }, + "launch": { + "message": "Avvia" + }, + "copyValue": { + "message": "Copia valore", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Riduci a icona durante la copia negli appunti" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Riduci a icona durante la copia dei dati dell'elemento negli appunti." + }, + "toggleVisibility": { + "message": "Mostra/Nascondi" + }, + "toggleCollapse": { + "message": "Comprimi/espandi", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Titolare della carta" + }, + "number": { + "message": "Numero" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Scadenza" + }, + "securityCode": { + "message": "Codice di sicurezza" + }, + "identityName": { + "message": "Nome dell'identità" + }, + "company": { + "message": "Azienda" + }, + "ssn": { + "message": "Codice fiscale/Previdenza sociale" + }, + "passportNumber": { + "message": "Numero del passaporto" + }, + "licenseNumber": { + "message": "Numero patente" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telefono" + }, + "address": { + "message": "Indirizzo" + }, + "premiumRequired": { + "message": "Abbonamento Premium Richiesto" + }, + "premiumRequiredDesc": { + "message": "Un abbonamento premium è richiesto per utilizzare questa funzionalità." + }, + "errorOccurred": { + "message": "Si è verificato un errore." + }, + "error": { + "message": "Errore" + }, + "january": { + "message": "Gennaio" + }, + "february": { + "message": "Febbraio" + }, + "march": { + "message": "Marzo" + }, + "april": { + "message": "Aprile" + }, + "may": { + "message": "Maggio" + }, + "june": { + "message": "Giugno" + }, + "july": { + "message": "Luglio" + }, + "august": { + "message": "Agosto" + }, + "september": { + "message": "Settembre" + }, + "october": { + "message": "Ottobre" + }, + "november": { + "message": "Novembre" + }, + "december": { + "message": "Dicembre" + }, + "ex": { + "message": "es.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titolo" + }, + "mr": { + "message": "Sig" + }, + "mrs": { + "message": "Sig.ra" + }, + "ms": { + "message": "Sig.na" + }, + "dr": { + "message": "Dott." + }, + "expirationMonth": { + "message": "Mese di scadenza" + }, + "expirationYear": { + "message": "Anno di scadenza" + }, + "select": { + "message": "Seleziona" + }, + "other": { + "message": "Altro" + }, + "generatePassword": { + "message": "Genera password" + }, + "type": { + "message": "Tipo" + }, + "firstName": { + "message": "Nome" + }, + "middleName": { + "message": "Secondo nome" + }, + "lastName": { + "message": "Cognome" + }, + "fullName": { + "message": "Nome completo" + }, + "address1": { + "message": "Indirizzo 1" + }, + "address2": { + "message": "Indirizzo 2" + }, + "address3": { + "message": "Indirizzo 3" + }, + "cityTown": { + "message": "Città / Comune" + }, + "stateProvince": { + "message": "Stato / Provincia" + }, + "zipPostalCode": { + "message": "CAP" + }, + "country": { + "message": "Nazione" + }, + "save": { + "message": "Salva" + }, + "cancel": { + "message": "Annulla" + }, + "delete": { + "message": "Elimina" + }, + "favorite": { + "message": "Preferito" + }, + "edit": { + "message": "Modifica" + }, + "authenticatorKeyTotp": { + "message": "Chiave di autenticazione (TOTP)" + }, + "folder": { + "message": "Cartella" + }, + "newCustomField": { + "message": "Nuovo campo personalizzato" + }, + "value": { + "message": "Valore" + }, + "dragToSort": { + "message": "Trascina per ordinare" + }, + "cfTypeText": { + "message": "Testo" + }, + "cfTypeHidden": { + "message": "Nascosto" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "cfTypeLinked": { + "message": "Collegato", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Valore collegato", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Rimuovi" + }, + "nameRequired": { + "message": "Il nome è obbligatorio." + }, + "addedItem": { + "message": "Elemento aggiunto" + }, + "editedItem": { + "message": "Elemento modificato" + }, + "deleteItem": { + "message": "Elimina elemento" + }, + "deleteFolder": { + "message": "Elimina cartella" + }, + "deleteAttachment": { + "message": "Elimina allegato" + }, + "deleteItemConfirmation": { + "message": "Sei sicuro di voler cestinare questo elemento?" + }, + "deletedItem": { + "message": "Elemento cestinato" + }, + "overwritePasswordConfirmation": { + "message": "Sei sicuro di voler sovrascrivere la password corrente?" + }, + "overwriteUsername": { + "message": "Sovrascrivi nome utente" + }, + "overwriteUsernameConfirmation": { + "message": "Sei sicuro di voler sovrascrivere il nome utente attuale?" + }, + "noneFolder": { + "message": "Nessuna cartella", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Aggiungi cartella" + }, + "editFolder": { + "message": "Modifica cartella" + }, + "regeneratePassword": { + "message": "Rigenera password" + }, + "copyPassword": { + "message": "Copia password" + }, + "copyUri": { + "message": "Copia URI" + }, + "copyVerificationCodeTotp": { + "message": "Copia codice di verifica (TOTP)" + }, + "length": { + "message": "Lunghezza" + }, + "numWords": { + "message": "Numero di parole" + }, + "wordSeparator": { + "message": "Separatore parole" + }, + "capitalize": { + "message": "Rendi maiuscolo", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Includi numero" + }, + "close": { + "message": "Chiudi" + }, + "minNumbers": { + "message": "Minimo di numeri" + }, + "minSpecial": { + "message": "Minimo di speciali", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evita caratteri ambigui" + }, + "searchCollection": { + "message": "Cerca nella raccolta" + }, + "searchFolder": { + "message": "Cerca nella cartella" + }, + "searchFavorites": { + "message": "Cerca tra i preferiti" + }, + "searchType": { + "message": "Cerca tipo", + "description": "Search item type" + }, + "newAttachment": { + "message": "Aggiungi nuovo allegato" + }, + "deletedAttachment": { + "message": "Allegato eliminato" + }, + "deleteAttachmentConfirmation": { + "message": "Sei sicuro di voler eliminare questo allegato?" + }, + "attachmentSaved": { + "message": "L'allegato è stato salvato." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Seleziona un file." + }, + "maxFileSize": { + "message": "La dimensione massima del file è 500 MB." + }, + "updateKey": { + "message": "Non puoi utilizzare questa funzione finché non aggiorni la tua chiave." + }, + "editedFolder": { + "message": "Cartella modificata" + }, + "addedFolder": { + "message": "Cartella aggiunta" + }, + "deleteFolderConfirmation": { + "message": "Sei sicuro di voler eliminare questa cartella?" + }, + "deletedFolder": { + "message": "Cartella eliminata" + }, + "loginOrCreateNewAccount": { + "message": "Accedi o crea un nuovo account per accedere alla tua cassaforte." + }, + "createAccount": { + "message": "Crea account" + }, + "logIn": { + "message": "Accedi" + }, + "submit": { + "message": "Invia" + }, + "masterPass": { + "message": "Password principale" + }, + "masterPassDesc": { + "message": "La password principale è quella che usi per accedere alla cassaforte. È molto importante che tu non la dimentichi. Non c'è alcun modo di recuperarla nel caso la dimenticassi." + }, + "masterPassHintDesc": { + "message": "Un suggerimento può aiutarti a ricordare la tua password principale nel caso in cui la dimentichi." + }, + "reTypeMasterPass": { + "message": "Digita nuovamente la password principale" + }, + "masterPassHint": { + "message": "Suggerimento password principale (facoltativo)" + }, + "settings": { + "message": "Impostazioni" + }, + "passwordHint": { + "message": "Suggerimento password" + }, + "enterEmailToGetHint": { + "message": "Inserisci l'indirizzo email del tuo account per ricevere il suggerimento della password principale." + }, + "getMasterPasswordHint": { + "message": "Ottieni il suggerimento per la password principale" + }, + "emailRequired": { + "message": "L'indirizzo email è obbligatorio." + }, + "invalidEmail": { + "message": "L'indirizzo email non è valido." + }, + "masterPassRequired": { + "message": "La password principale è obbligatoria." + }, + "masterPassLength": { + "message": "La password principale deve avere almeno 8 caratteri." + }, + "masterPassDoesntMatch": { + "message": "La conferma della password principale non corrisponde." + }, + "newAccountCreated": { + "message": "Il tuo account è stato creato! Ora puoi effettuare l'accesso." + }, + "masterPassSent": { + "message": "Ti abbiamo inviato un'email con il tuo suggerimento per la password principale." + }, + "unexpectedError": { + "message": "Si è verificato un errore imprevisto." + }, + "itemInformation": { + "message": "Informazioni sull'elemento" + }, + "noItemsInList": { + "message": "Non ci sono elementi da elencare." + }, + "sendVerificationCode": { + "message": "Invia un codice di verifica alla tua email" + }, + "sendCode": { + "message": "Invia codice" + }, + "codeSent": { + "message": "Codice inviato" + }, + "verificationCode": { + "message": "Codice di verifica" + }, + "confirmIdentity": { + "message": "Conferma la tua identità per continuare." + }, + "verificationCodeRequired": { + "message": "Il codice di verifica è obbligatorio." + }, + "invalidVerificationCode": { + "message": "Codice di verifica non valido" + }, + "continue": { + "message": "Continua" + }, + "enterVerificationCodeApp": { + "message": "Inserisci il codice di verifica a 6 cifre dalla tua applicazione di autenticazione." + }, + "enterVerificationCodeEmail": { + "message": "Inserisci il codice di verifica a 6 cifre che è stato inviato all'indirizzo $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "L'email di verifica è stata inviata all'indirizzo $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Ricordami" + }, + "sendVerificationCodeEmailAgain": { + "message": "Invia nuovamente l'email con il codice di verifica" + }, + "useAnotherTwoStepMethod": { + "message": "Usa un altro metodo di verifica in due passaggi" + }, + "insertYubiKey": { + "message": "Inserisci la tua YubiKey nella porta USB del computer e poi premi il suo pulsante." + }, + "insertU2f": { + "message": "Inserisci la tua chiave di sicurezza nella porta USB del tuo computer. Se dispone di un pulsante, premilo." + }, + "recoveryCodeDesc": { + "message": "Hai perso l'accesso a tutti i tuoi metodi di verifica in due passaggi? Usa il tuo codice di recupero per disattivare tutti i metodi di verifica in due passaggi sul tuo account." + }, + "recoveryCodeTitle": { + "message": "Codice di recupero" + }, + "authenticatorAppTitle": { + "message": "Applicazione di autenticazione" + }, + "authenticatorAppDesc": { + "message": "Usa un'applicazione di autenticazione (come Authy o Google Authenticator) per generare codici di verifica a tempo.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Chiave di sicurezza YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Usa YubiKey per accedere al tuo account. Compatibile con YubiKey 4, 4 Nano, 4C, e dispositivi NEO." + }, + "duoDesc": { + "message": "Verifica con Duo Security usando l'applicazione Duo Mobile, SMS, chiamata telefonica, o chiave di sicurezza U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifica con Duo Security per la tua azienda usando l'applicazione Duo Mobile, SMS, chiamata telefonica, o chiave di sicurezza U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Usa qualsiasi chiave di sicurezza abilitata WebAuthn per accedere al tuo account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "I codici di verifica ti saranno inviati per email." + }, + "loginUnavailable": { + "message": "Accesso non disponibile" + }, + "noTwoStepProviders": { + "message": "Questo account ha la verifica in due passaggi abilitata, ma nessuno dei provider configurati è supportato da questo browser." + }, + "noTwoStepProviders2": { + "message": "Aggiungi altri metodi che sono supportati meglio su tutti i dispositivi (ad esempio, un'applicazione di autenticazione)." + }, + "twoStepOptions": { + "message": "Opzioni di accesso in due passaggi" + }, + "selfHostedEnvironment": { + "message": "Ambiente self-hosted" + }, + "selfHostedEnvironmentFooter": { + "message": "Specifica l'URL principale della tua installazione Bitwarden locale." + }, + "customEnvironment": { + "message": "Ambiente personalizzato" + }, + "customEnvironmentFooter": { + "message": "Per utenti avanzati. Puoi specificare l'URL principale di ogni servizio indipendentemente." + }, + "baseUrl": { + "message": "URL del server" + }, + "apiUrl": { + "message": "URL del server API" + }, + "webVaultUrl": { + "message": "URL della cassaforte web" + }, + "identityUrl": { + "message": "URL del server di identità" + }, + "notificationsUrl": { + "message": "URL del server delle notifiche" + }, + "iconsUrl": { + "message": "URL del server di icone" + }, + "environmentSaved": { + "message": "Gli URL dell'ambiente sono stati salvati." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Sì" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Sovrascrivi password" + }, + "learnMore": { + "message": "Per saperne di più" + }, + "featureUnavailable": { + "message": "Funzione non disponibile" + }, + "loggedOut": { + "message": "Disconnesso" + }, + "loginExpired": { + "message": "La tua sessione è scaduta." + }, + "logOutConfirmation": { + "message": "Sei sicuro di volerti disconnettere?" + }, + "logOut": { + "message": "Disconnetti" + }, + "addNewLogin": { + "message": "Aggiungi nuovo accesso" + }, + "addNewItem": { + "message": "Aggiungi nuovo elemento" + }, + "addNewFolder": { + "message": "Aggiungi nuova cartella" + }, + "view": { + "message": "Visualizza" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Caricamento in corso..." + }, + "lockVault": { + "message": "Blocca la cassaforte" + }, + "passwordGenerator": { + "message": "Generatore di password" + }, + "contactUs": { + "message": "Contattaci" + }, + "getHelp": { + "message": "Ottieni aiuto" + }, + "fileBugReport": { + "message": "Segnala un bug" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Seguici" + }, + "syncVault": { + "message": "Sincronizza la cassaforte" + }, + "changeMasterPass": { + "message": "Cambia password principale" + }, + "changeMasterPasswordConfirmation": { + "message": "Puoi cambiare la tua password principale su bitwarden.com. Vuoi visitare ora il sito?" + }, + "fingerprintPhrase": { + "message": "Frase impronta", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Frase impronta dell'account", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Vai alla cassaforte web" + }, + "getMobileApp": { + "message": "Scarica l'applicazione mobile" + }, + "getBrowserExtension": { + "message": "Scarica l'estensione del browser" + }, + "syncingComplete": { + "message": "Sincronizzazione completata" + }, + "syncingFailed": { + "message": "Sincronizzazione non riuscita" + }, + "yourVaultIsLocked": { + "message": "La tua cassaforte è bloccata. Inserisci la tua password principale per continuare." + }, + "unlock": { + "message": "Sblocca" + }, + "loggedInAsOn": { + "message": "Accesso effettuato come $EMAIL$ su $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Password principale errata" + }, + "twoStepLoginConfirmation": { + "message": "L'autenticazione in due passaggi rende il tuo account più sicuro richiedendo di verificare l'accesso con un altro dispositivo come una chiave di sicurezza, applicazione di autenticazione, SMS, telefonata o email. Può essere abilitata su bitwarden.com. Vuoi visitare il sito ora?" + }, + "twoStepLogin": { + "message": "Verifica in due passaggi" + }, + "vaultTimeout": { + "message": "Timeout cassaforte" + }, + "vaultTimeoutDesc": { + "message": "Scegli quando la tua cassaforte andrà in timeout ed esegui l'azione selezionata." + }, + "immediately": { + "message": "Immediatamente" + }, + "tenSeconds": { + "message": "10 secondi" + }, + "twentySeconds": { + "message": "20 secondi" + }, + "thirtySeconds": { + "message": "30 secondi" + }, + "oneMinute": { + "message": "1 minuto" + }, + "twoMinutes": { + "message": "2 minuti" + }, + "fiveMinutes": { + "message": "5 minuti" + }, + "fifteenMinutes": { + "message": "15 minuti" + }, + "thirtyMinutes": { + "message": "30 minuti" + }, + "oneHour": { + "message": "1 ora" + }, + "fourHours": { + "message": "4 ore" + }, + "onIdle": { + "message": "Quando il sistema è inattivo" + }, + "onSleep": { + "message": "Quando il sistema è sospeso" + }, + "onLocked": { + "message": "Quando il sistema è bloccato" + }, + "onRestart": { + "message": "Al riavvio" + }, + "never": { + "message": "Mai" + }, + "security": { + "message": "Sicurezza" + }, + "clearClipboard": { + "message": "Cancella appunti", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Cancella automaticamente i valori copiati dagli appunti.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disabilita icone dei siti web" + }, + "disableFaviconDesc": { + "message": "Le icone dei siti web forniscono un'immagine riconoscibile accanto ad ogni elemento di login della cassaforte." + }, + "enableMinToTray": { + "message": "Riduci nell'area di notifica" + }, + "enableMinToTrayDesc": { + "message": "Riduci nell'area di notifica invece di ridurre a icona." + }, + "enableMinToMenuBar": { + "message": "Riduci nella barra dei menu" + }, + "enableMinToMenuBarDesc": { + "message": "Mostra un'icona nella barra dei menu quando si minimizza la finestra." + }, + "enableCloseToTray": { + "message": "Chiudi nell'area di notifica" + }, + "enableCloseToTrayDesc": { + "message": "Mostra un'icona nell'area di notifica quando si chiude la finestra." + }, + "enableCloseToMenuBar": { + "message": "Chiudi nella barra dei menu" + }, + "enableCloseToMenuBarDesc": { + "message": "Quando chiudi la finestra, mostra invece un'icona nella barra dei menu." + }, + "enableTray": { + "message": "Icona nell'area di notifica" + }, + "enableTrayDesc": { + "message": "Mostra sempre un'icona nell'area di notifica." + }, + "startToTray": { + "message": "Avvio dall'area di notifica" + }, + "startToTrayDesc": { + "message": "Mostra solo l'icona nell'area di notifica all'avvio dell'applicazione." + }, + "startToMenuBar": { + "message": "Avvia dalla barra dei menu" + }, + "startToMenuBarDesc": { + "message": "Mostra solo l'icona nella barra dei menu all'avvio dell'applicazione." + }, + "openAtLogin": { + "message": "Avvia automaticamente all'accesso" + }, + "openAtLoginDesc": { + "message": "Avvia automaticamente Bitwarden Desktop all'accesso." + }, + "alwaysShowDock": { + "message": "Mostra sempre nel Dock" + }, + "alwaysShowDockDesc": { + "message": "Mostra l'icona di Bitwarden nel Dock anche quando minimizzato nella barra dei menu." + }, + "confirmTrayTitle": { + "message": "Conferma disattivazione icona del vassoio" + }, + "confirmTrayDesc": { + "message": "La disabilitazione di questa impostazione disabiliterà anche tutte le altre impostazioni del vassoio." + }, + "language": { + "message": "Lingua" + }, + "languageDesc": { + "message": "Cambia la lingua dell'applicazione. Riavvio necessario." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Cambia lo schema di colori dell'applicazione." + }, + "dark": { + "message": "Scuro", + "description": "Dark color" + }, + "light": { + "message": "Chiaro", + "description": "Light color" + }, + "copy": { + "message": "Copia", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Controlla aggiornamenti" + }, + "version": { + "message": "Versione $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Riavvia per aggiornare" + }, + "restartToUpdateDesc": { + "message": "Versione $VERSION_NUM$ è pronto per l'installazione. È necessario riavviare Bitwarden per completare l'installazione. Desideri riavviare e aggiornare ora?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Aggiornamento disponibile" + }, + "updateAvailableDesc": { + "message": "Un aggiornamento è stato trovato. Desideri scaricarlo adesso?" + }, + "restart": { + "message": "Riavvia" + }, + "later": { + "message": "Più tardi" + }, + "noUpdatesAvailable": { + "message": "Non sono attualmente disponibili aggiornamenti. Stai utilizzando la versione più recente." + }, + "updateError": { + "message": "Errore di aggiornamento" + }, + "unknown": { + "message": "Sconosciuto" + }, + "copyUsername": { + "message": "Copia nome utente" + }, + "copyNumber": { + "message": "Copia numero", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copia il codice di sicurezza", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Abbonamento Premium" + }, + "premiumManage": { + "message": "Gestisci abbonamento" + }, + "premiumManageAlert": { + "message": "Puoi gestire il tuo abbonamento premium online su bitwarden.com. Vuoi visitare ora il sito?" + }, + "premiumRefresh": { + "message": "Aggiorna abbonamento" + }, + "premiumNotCurrentMember": { + "message": "Al momento non sei un membro premium." + }, + "premiumSignUpAndGet": { + "message": "Iscriviti a un abbonamento premium e ottieni:" + }, + "premiumSignUpStorage": { + "message": "1 GB di spazio di archiviazione cifrato per gli allegati." + }, + "premiumSignUpTwoStep": { + "message": "Opzioni di verifica in due passaggi addizionali come YubiKey, FIDO U2F, e Duo." + }, + "premiumSignUpReports": { + "message": "Sicurezza delle password, integrità dell'account e resoconti sulla violazione dei dati per mantenere sicura la tua cassaforte." + }, + "premiumSignUpTotp": { + "message": "Generatore di codice di verifica TOTP (2FA) per i login nella tua cassaforte." + }, + "premiumSignUpSupport": { + "message": "Supporto clienti prioritario." + }, + "premiumSignUpFuture": { + "message": "Tutte le funzioni premium future. Nuove in arrivo!" + }, + "premiumPurchase": { + "message": "Acquista Premium" + }, + "premiumPurchaseAlert": { + "message": "Puoi acquistare il tuo abbonamento premium online su bitwarden.com. Vuoi visitare ora il sito?" + }, + "premiumCurrentMember": { + "message": "Sei un membro premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Grazie per il tuo supporto a Bitwarden." + }, + "premiumPrice": { + "message": "Il tutto per solo $PRICE$ all'anno!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Aggiornamento completato" + }, + "passwordHistory": { + "message": "Cronologia delle password" + }, + "clear": { + "message": "Cancella", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Non ci sono password da elencare." + }, + "undo": { + "message": "Annulla" + }, + "redo": { + "message": "Rifai" + }, + "cut": { + "message": "Taglia", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Incolla", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Seleziona tutto" + }, + "zoomIn": { + "message": "Ingrandisci" + }, + "zoomOut": { + "message": "Rimpicciolisci" + }, + "resetZoom": { + "message": "Ripristina zoom" + }, + "toggleFullScreen": { + "message": "Attiva/disattiva schermo intero" + }, + "reload": { + "message": "Ricarica" + }, + "toggleDevTools": { + "message": "Attiva/disattiva strumenti di sviluppo" + }, + "minimize": { + "message": "Minimizza", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Porta tutto in primo piano", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Informazioni su Bitwarden" + }, + "services": { + "message": "Servizi" + }, + "hideBitwarden": { + "message": "Nascondi Bitwarden" + }, + "hideOthers": { + "message": "Nascondi altri" + }, + "showAll": { + "message": "Mostra tutto" + }, + "quitBitwarden": { + "message": "Esci da Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copiata", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Aiuto" + }, + "window": { + "message": "Finestra" + }, + "checkPassword": { + "message": "Verifica se la password è stata esposta." + }, + "passwordExposed": { + "message": "Questa password è presente $VALUE$ volta/e in database di violazioni. Dovresti cambiarla.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Questa password non è stata trovata in dati violati noti. Dovrebbe essere sicura da usare." + }, + "baseDomain": { + "message": "Dominio di base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nome dominio", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Esatto" + }, + "startsWith": { + "message": "Inizia con" + }, + "regEx": { + "message": "Espressione regolare", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Rilevamento di corrispondenza", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Rilevamento di corrispondenza predefinito", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Attiva/Disattiva opzioni" + }, + "organization": { + "message": "Organizzazione", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Predefinito" + }, + "exit": { + "message": "Esci" + }, + "showHide": { + "message": "Mostra / Nascondi", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Nascondi nell'area di notifica" + }, + "alwaysOnTop": { + "message": "Sempre in primo piano", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Aggiornato", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password aggiornata", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Esporta cassaforte" + }, + "fileFormat": { + "message": "Formato file" + }, + "warning": { + "message": "ATTENZIONE", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Conferma esportazione della cassaforte" + }, + "exportWarningDesc": { + "message": "Questa esportazione contiene i dati della cassaforte in un formato non cifrato. Non archiviare o inviare il file esportato su canali non protetti (come la posta elettronica). Eliminalo immediatamente dopo aver finito di usarlo." + }, + "encExportKeyWarningDesc": { + "message": "Questa esportazione cifra i tuoi dati utilizzando la chiave di cifratura del tuo account. Se cambi la chiave di cifratura del tuo account, non sarai più in grado di decifrare il file esportato e sarà necessario eseguire una nuova esportazione." + }, + "encExportAccountWarningDesc": { + "message": "Le chiavi di cifratura dell'account sono uniche per ogni account utente Bitwarden, quindi non è possibile importare un'esportazione cifrata in un account diverso." + }, + "noOrganizationsList": { + "message": "Non appartieni ad alcuna organizzazione. Le organizzazioni ti consentono di condividere oggetti in modo sicuro con altri utenti." + }, + "noCollectionsInList": { + "message": "Nessuna raccolta da elencare." + }, + "ownership": { + "message": "Proprietà" + }, + "whoOwnsThisItem": { + "message": "A chi appartiene questo elemento?" + }, + "strong": { + "message": "Robusta", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Buona", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Debole", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Password principale debole" + }, + "weakMasterPasswordDesc": { + "message": "La password principale che hai scelto è debole. È necessario utilizzare una password principale forte (o una frase segreta) per proteggere adeguatamente il tuo account Bitwarden. Sei sicuro di voler utilizzare questa password principale?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Sblocca con PIN" + }, + "setYourPinCode": { + "message": "Imposta il tuo codice PIN per sbloccare Bitwarden. Le impostazioni del PIN saranno reimpostate se ti disconnetti dall'applicazione." + }, + "pinRequired": { + "message": "È richiesto il PIN." + }, + "invalidPin": { + "message": "Codice PIN non valido." + }, + "unlockWithWindowsHello": { + "message": "Sblocca con Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verifica per Bitwarden." + }, + "unlockWithTouchId": { + "message": "Sblocca con Touch ID" + }, + "touchIdConsentMessage": { + "message": "sblocca la cassaforte" + }, + "noAutoPromptWindowsHello": { + "message": "Non richiedere Windows Hello all'avvio." + }, + "noAutoPromptTouchId": { + "message": "Non richiedere Touch ID all'avvio." + }, + "lockWithMasterPassOnRestart": { + "message": "Blocca con la password principale al riavvio" + }, + "preferences": { + "message": "Preferenze" + }, + "enableMenuBar": { + "message": "Abilita icona barra dei menu" + }, + "enableMenuBarDesc": { + "message": "Mostra sempre un'icona nella barra dei menu." + }, + "hideToMenuBar": { + "message": "Nascondi nella barra dei menu" + }, + "selectOneCollection": { + "message": "Devi selezionare almeno una raccolta." + }, + "premiumUpdated": { + "message": "Hai effettuato l'aggiornamento a premium." + }, + "restore": { + "message": "Ripristina" + }, + "premiumManageAlertAppStore": { + "message": "Puoi gestire il tuo abbonamento dall'App Store. Vuoi visitare l'App Store adesso?" + }, + "legal": { + "message": "Informazioni legali", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Termini del servizio" + }, + "privacyPolicy": { + "message": "Informativa sulla privacy" + }, + "unsavedChangesConfirmation": { + "message": "Sei sicuro di voler uscire? Se esci adesso, le informazioni attuali non saranno salvate." + }, + "unsavedChangesTitle": { + "message": "Modifiche non salvate" + }, + "clone": { + "message": "Clona" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una o più policy dell'organizzazione controllano le impostazioni del tuo generatore." + }, + "vaultTimeoutAction": { + "message": "Azione timeout cassaforte" + }, + "vaultTimeoutActionLockDesc": { + "message": "Una cassaforte bloccata richiede l'inserimento della password principale per accedere nuovamente." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "La disconnessione dalla cassaforte richiede l'inserimento della password principale per accedere nuovamente." + }, + "lock": { + "message": "Blocca", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Cestino", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Cerca nel cestino" + }, + "permanentlyDeleteItem": { + "message": "Elimina definitivamente l'elemento" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Sei sicuro di voler eliminare definitivamente questo elemento?" + }, + "permanentlyDeletedItem": { + "message": "Elemento eliminato definitivamente" + }, + "restoreItem": { + "message": "Ripristina elemento" + }, + "restoreItemConfirmation": { + "message": "Sei sicuro di voler ripristinare questo elemento?" + }, + "restoredItem": { + "message": "Elemento ripristinato" + }, + "permanentlyDelete": { + "message": "Elimina definitivamente" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "La disconnessione rimuove tutti gli accessi alla tua cassaforte e richiede l'autenticazione in linea dopo il periodo di timeout. Sei sicuro di voler utilizzare questa impostazione?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Conferma azione di timeout" + }, + "enterpriseSingleSignOn": { + "message": "Single Sign-On aziendale" + }, + "setMasterPassword": { + "message": "Imposta la password principale" + }, + "ssoCompleteRegistration": { + "message": "Per completare l'accesso con SSO, imposta una password principale per accedere e proteggere la cassaforte." + }, + "newMasterPass": { + "message": "Nuova password principale" + }, + "confirmNewMasterPass": { + "message": "Conferma nuova password principale" + }, + "masterPasswordPolicyInEffect": { + "message": "La password principale deve avere i seguenti requisiti, stabiliti da una o più regole dell'organizzazione:" + }, + "policyInEffectMinComplexity": { + "message": "Punteggio minimo di complessità $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Lunghezza minima $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contiene almeno un carattere maiuscolo" + }, + "policyInEffectLowercase": { + "message": "Contiene almeno un carattere minuscolo" + }, + "policyInEffectNumbers": { + "message": "Contiene almeno una cifra" + }, + "policyInEffectSpecial": { + "message": "Contiene almeno uno dei seguenti caratteri speciali $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "La tua nuova password principale non soddisfa i requisiti di sicurezza." + }, + "acceptPolicies": { + "message": "Marcando la casella accetti quanto segue:" + }, + "acceptPoliciesError": { + "message": "I termini di servizio e l'informativa sulla privacy non sono stati accettati." + }, + "enableBrowserIntegration": { + "message": "Abilita l'integrazione del browser" + }, + "enableBrowserIntegrationDesc": { + "message": "L'integrazione del browser è utilizzata per l'autenticazione biometrica." + }, + "browserIntegrationMasOnlyTitle": { + "message": "L'integrazione del browser non è supportata" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Purtroppo l'integrazione del browser è supportata solo nella versione disponibile nel Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "L'integrazione del browser non è supportata" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Purtroppo l'integrazione del browser non è attualmente supportata nella versione disponibile nel Microsoft Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Richiedi verifica per l'integrazione del browser" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Abilita un livello aggiuntivo di sicurezza richiedendo la conferma della frase impronta quando viene stabilito un collegamento fra il desktop e il browser. Quando abilitato, sarà necessario che l'utente esegua la verifica ad ogni nuova connessione." + }, + "approve": { + "message": "Approva" + }, + "verifyBrowserTitle": { + "message": "Verifica connessione browser" + }, + "verifyBrowserDesc": { + "message": "Assicurati che l'impronta digitale mostrata sia identica all'impronta digitale mostrata nell'estensione del browser." + }, + "biometricsNotEnabledTitle": { + "message": "Autenticazione biometrica non abilitata" + }, + "biometricsNotEnabledDesc": { + "message": "L'autenticazione biometrica del browser richiede che l'autenticazione biometrica del desktop sia stata abilitata prima nelle impostazioni." + }, + "personalOwnershipSubmitError": { + "message": "A causa di una policy aziendale, non è possibile salvare elementi nella tua cassaforte personale. Cambia l'opzione Proprietà in un'organizzazione e scegli tra le raccolte disponibili." + }, + "hintEqualsPassword": { + "message": "Il suggerimento della password non può essere uguale alla password." + }, + "personalOwnershipPolicyInEffect": { + "message": "Una policy dell'organizzazione controlla le opzioni di proprietà." + }, + "allSends": { + "message": "Tutti i Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Testo" + }, + "searchSends": { + "message": "Cerca Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Modifica Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "La mia cassaforte" + }, + "text": { + "message": "Testo" + }, + "deletionDate": { + "message": "Data di eliminazione" + }, + "deletionDateDesc": { + "message": "Il Send sarà definitivamente eliminato alla data e all'ora specificate.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Data di scadenza" + }, + "expirationDateDesc": { + "message": "Se impostata, l'accesso a questo Send scadrà alla data e all'ora specificate.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Numero massimo di accessi" + }, + "maxAccessCountDesc": { + "message": "Se impostata, gli utenti non saranno più in grado di accedere a questo Send una volta raggiunto il numero massimo di accessi.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Conteggio accessi attuale" + }, + "disableSend": { + "message": "Disabilita il Send per renderlo inaccessibile.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Facoltativamente, richiedi una password agli utenti per accedere al Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Note private sul Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Collegamento del Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Collegamento del Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Quando accedi al Send, nascondi il testo in modo predefinito", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send creato", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send modificato", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send eliminato", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nuova password" + }, + "whatTypeOfSend": { + "message": "Di quale tipo di Send si tratta?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Crea Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Il testo che desideri inviare." + }, + "sendFileDesc": { + "message": "Il file che desideri inviare." + }, + "days": { + "message": "$DAYS$ giorni", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 giorno" + }, + "custom": { + "message": "Personalizzato" + }, + "deleteSendConfirmation": { + "message": "Sei sicuro di voler eliminare questo Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copia collegamento Send negli appunti", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copia il collegamento per condividere questo Send nei miei appunti dopo aver salvato." + }, + "sendDisabled": { + "message": "Send disabilitato", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "A causa di una policy aziendale, è possibile eliminare solo un Send esistente.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copia collegamento" + }, + "disabled": { + "message": "Disabilitato" + }, + "maxAccessCountReached": { + "message": "Numero massimo di accessi raggiunto" + }, + "expired": { + "message": "Scaduto" + }, + "pendingDeletion": { + "message": "In attesa di eliminazione" + }, + "webAuthnAuthenticate": { + "message": "Autenticazione WebAuthn" + }, + "hideEmail": { + "message": "Nascondi il mio indirizzo email dai destinatari." + }, + "sendOptionsPolicyInEffect": { + "message": "Una o più policy dell'organizzazione influenzano le opzioni dei Send." + }, + "emailVerificationRequired": { + "message": "Verifica email necessaria" + }, + "emailVerificationRequiredDesc": { + "message": "Devi verificare la tua email per utilizzare questa funzionalità." + }, + "passwordPrompt": { + "message": "Nuova richiesta della password principale" + }, + "passwordConfirmation": { + "message": "Conferma della password principale" + }, + "passwordConfirmationDesc": { + "message": "Questa azione è protetta. Per continuare, inserisci nuovamente la tua password principale per verificare la tua identità." + }, + "updatedMasterPassword": { + "message": "Password principale aggiornata" + }, + "updateMasterPassword": { + "message": "Aggiorna password principale" + }, + "updateMasterPasswordWarning": { + "message": "La tua password principale è stata recentemente modificata da un amministratore nella tua organizzazione. Per accedere alla cassaforte, aggiorna ora la password. Procedendo sarai disconnesso dalla sessione attuale e ti sarà richiesto di effettuare nuovamente l'accesso. Le sessioni attive su altri dispositivi potrebbero continuare a rimanere attive per un massimo di un'ora." + }, + "hours": { + "message": "Ore" + }, + "minutes": { + "message": "Minuti" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Le policy dell'organizzazione stanno influenzando il timeout della tua cassaforte. Il tempo massimo consentito è di $HOURS$ ore e $MINUTES$ minuti", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Il timeout della tua cassaforte supera i limiti impostati dalla tua organizzazione." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Iscrizione automatica" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Questa organizzazione ha una policy aziendale che ti iscriverà automaticamente al ripristino della password. Ciò permetterà agli amministratori dell'organizzazione di cambiare la tua password principale." + }, + "vaultExportDisabled": { + "message": "Esportazione cassaforte disabilitata" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una o più policy dell'organizzazione ti impediscono di esportare la tua cassaforte personale." + }, + "addAccount": { + "message": "Aggiungi account" + }, + "removeMasterPassword": { + "message": "Rimuovi la password principale" + }, + "removedMasterPassword": { + "message": "Password principale rimossa." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ sta usando SSO con un server \"self-hosted\". Non è più richiesta una password principale per accedere per i membri di questa organizzazione.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Lascia l'organizzazione" + }, + "leaveOrganizationConfirmation": { + "message": "Sei sicuro di voler lasciare questa organizzazione?" + }, + "leftOrganization": { + "message": "Hai lasciato l'organizzazione." + }, + "ssoKeyConnectorUnavailable": { + "message": "Impossibile raggiungere il key connector, riprova più tardi." + }, + "lockAllVaults": { + "message": "Blocca tutte le casseforti" + }, + "accountLimitReached": { + "message": "Non possono essere accedere più di 5 account contemporaneamente." + }, + "accountPreferences": { + "message": "Preferenze" + }, + "appPreferences": { + "message": "Impostazioni applicazione (tutti gli account)" + }, + "accountSwitcherLimitReached": { + "message": "Limite di account raggiunto. Disconnetti un account per aggiungerne un altro." + }, + "settingsTitle": { + "message": "Impostazioni applicazione per $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Cambia account" + }, + "options": { + "message": "Opzioni" + }, + "sessionTimeout": { + "message": "La tua sessione è scaduta. Torna indietro e riprova ad accedere." + }, + "exportingPersonalVaultTitle": { + "message": "Esportazione cassaforte personale" + }, + "exportingPersonalVaultDescription": { + "message": "Saranno esportati solo gli oggetti della cassaforte personale associati a $EMAIL$. Gli oggetti della cassaforte dell'organizzazione non saranno inclusi.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generatore" + }, + "whatWouldYouLikeToGenerate": { + "message": "Cosa vorresti generare?" + }, + "passwordType": { + "message": "Tipo di password" + }, + "regenerateUsername": { + "message": "Rigenera nome utente" + }, + "generateUsername": { + "message": "Genera nome utente" + }, + "usernameType": { + "message": "Tipo di nome utente" + }, + "plusAddressedEmail": { + "message": "Indirizzo di posta alternativo" + }, + "plusAddressedEmailDesc": { + "message": "Usa le funzionalità di sub-indirizzamento del tuo fornitore di posta elettronica." + }, + "catchallEmail": { + "message": "Email catch-all" + }, + "catchallEmailDesc": { + "message": "Usa la casella di posta catch-all di dominio." + }, + "random": { + "message": "Casuale" + }, + "randomWord": { + "message": "Parola casuale" + }, + "websiteName": { + "message": "Nome sito web" + }, + "service": { + "message": "Servizio" + } +} diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json new file mode 100644 index 0000000000..5db3bb7863 --- /dev/null +++ b/apps/desktop/src/locales/ja/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "フィルター" + }, + "allItems": { + "message": "全てのアイテム" + }, + "favorites": { + "message": "お気に入り" + }, + "types": { + "message": "タイプ" + }, + "typeLogin": { + "message": "ログイン" + }, + "typeCard": { + "message": "カード" + }, + "typeIdentity": { + "message": "ID" + }, + "typeSecureNote": { + "message": "セキュアメモ" + }, + "folders": { + "message": "フォルダー" + }, + "collections": { + "message": "コレクション" + }, + "searchVault": { + "message": "保管庫を検索" + }, + "addItem": { + "message": "アイテムの追加" + }, + "shared": { + "message": "共有" + }, + "share": { + "message": "共有" + }, + "moveToOrganization": { + "message": "組織に移動" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ を $ORGNAME$ に移動しました", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "このアイテムを移動する組織を選択してください。組織に移動すると、アイテムの所有権がその組織に移行します。 このアイテムが移動された後、あなたはこのアイテムの直接の所有者にはなりません。" + }, + "attachments": { + "message": "添付ファイル" + }, + "viewItem": { + "message": "アイテムの表示" + }, + "name": { + "message": "名前" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "新しい URI" + }, + "username": { + "message": "ユーザー名" + }, + "password": { + "message": "パスワード" + }, + "passphrase": { + "message": "パスフレーズ" + }, + "editItem": { + "message": "アイテムの編集" + }, + "emailAddress": { + "message": "メールアドレス" + }, + "verificationCodeTotp": { + "message": "認証コード (TOTP)" + }, + "website": { + "message": "ウェブサイト" + }, + "notes": { + "message": "メモ" + }, + "customFields": { + "message": "カスタムフィールド" + }, + "launch": { + "message": "開く" + }, + "copyValue": { + "message": "値のコピー", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "クリップボードへのコピー時に最小化する" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "アイテムデータをクリップボードにコピーしたときに最小化します。" + }, + "toggleVisibility": { + "message": "表示切り替え" + }, + "toggleCollapse": { + "message": "開く/閉じる", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "カードの名義人名" + }, + "number": { + "message": "番号" + }, + "brand": { + "message": "ブランド" + }, + "expiration": { + "message": "有効期限" + }, + "securityCode": { + "message": "セキュリティコード" + }, + "identityName": { + "message": "固有名" + }, + "company": { + "message": "会社名" + }, + "ssn": { + "message": "社会保障番号" + }, + "passportNumber": { + "message": "パスポート番号" + }, + "licenseNumber": { + "message": "免許証番号" + }, + "email": { + "message": "メールアドレス" + }, + "phone": { + "message": "電話番号" + }, + "address": { + "message": "住所" + }, + "premiumRequired": { + "message": "プレミアム会員専用" + }, + "premiumRequiredDesc": { + "message": "この機能はプレミアムメンバー専用です。" + }, + "errorOccurred": { + "message": "エラーが発生しました。" + }, + "error": { + "message": "エラー" + }, + "january": { + "message": "1月" + }, + "february": { + "message": "2月" + }, + "march": { + "message": "3月" + }, + "april": { + "message": "4月" + }, + "may": { + "message": "5月" + }, + "june": { + "message": "6月" + }, + "july": { + "message": "7月" + }, + "august": { + "message": "8月" + }, + "september": { + "message": "9月" + }, + "october": { + "message": "10月" + }, + "november": { + "message": "11月" + }, + "december": { + "message": "12月" + }, + "ex": { + "message": "例:", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "敬称" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "有効期限月" + }, + "expirationYear": { + "message": "有効期限年" + }, + "select": { + "message": "選択" + }, + "other": { + "message": "その他" + }, + "generatePassword": { + "message": "パスワードの自動生成" + }, + "type": { + "message": "タイプ" + }, + "firstName": { + "message": "名" + }, + "middleName": { + "message": "ミドルネーム" + }, + "lastName": { + "message": "姓" + }, + "fullName": { + "message": "フルネーム" + }, + "address1": { + "message": "住所1" + }, + "address2": { + "message": "住所2" + }, + "address3": { + "message": "住所3" + }, + "cityTown": { + "message": "市町村" + }, + "stateProvince": { + "message": "都道府県" + }, + "zipPostalCode": { + "message": "郵便番号" + }, + "country": { + "message": "国" + }, + "save": { + "message": "保存" + }, + "cancel": { + "message": "キャンセル" + }, + "delete": { + "message": "削除" + }, + "favorite": { + "message": "お気に入り" + }, + "edit": { + "message": "編集" + }, + "authenticatorKeyTotp": { + "message": "認証キー (TOTP)" + }, + "folder": { + "message": "フォルダー" + }, + "newCustomField": { + "message": "新規カスタムフィールド" + }, + "value": { + "message": "値" + }, + "dragToSort": { + "message": "ドラッグして並べ替え" + }, + "cfTypeText": { + "message": "テキスト" + }, + "cfTypeHidden": { + "message": "非表示" + }, + "cfTypeBoolean": { + "message": "真偽値" + }, + "cfTypeLinked": { + "message": "リンク済", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "リンクされた値", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "削除" + }, + "nameRequired": { + "message": "名前は必須項目です。" + }, + "addedItem": { + "message": "追加しました" + }, + "editedItem": { + "message": "編集しました" + }, + "deleteItem": { + "message": "アイテムの削除" + }, + "deleteFolder": { + "message": "フォルダーの削除" + }, + "deleteAttachment": { + "message": "添付ファイルの削除" + }, + "deleteItemConfirmation": { + "message": "このアイテムを削除してもよろしいですか?" + }, + "deletedItem": { + "message": "削除しました" + }, + "overwritePasswordConfirmation": { + "message": "現在のパスワードを上書きしてもよろしいですか?" + }, + "overwriteUsername": { + "message": "ユーザー名を上書き" + }, + "overwriteUsernameConfirmation": { + "message": "現在のユーザー名を上書きしてもよろしいですか?" + }, + "noneFolder": { + "message": "フォルダーなし", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "フォルダーの追加" + }, + "editFolder": { + "message": "フォルダーの編集" + }, + "regeneratePassword": { + "message": "パスワードの再生成" + }, + "copyPassword": { + "message": "パスワードのコピー" + }, + "copyUri": { + "message": "URI のコピー" + }, + "copyVerificationCodeTotp": { + "message": "認証コード (TOTP) をコピー" + }, + "length": { + "message": "長さ" + }, + "numWords": { + "message": "単語数" + }, + "wordSeparator": { + "message": "単語の区切り" + }, + "capitalize": { + "message": "先頭を大文字", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "数字を含む" + }, + "close": { + "message": "閉じる" + }, + "minNumbers": { + "message": "数字の最小数" + }, + "minSpecial": { + "message": "記号の最小数", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "あいまいな文字を省く" + }, + "searchCollection": { + "message": "コレクションの検索" + }, + "searchFolder": { + "message": "フォルダーの検索" + }, + "searchFavorites": { + "message": "お気に入りの検索" + }, + "searchType": { + "message": "検索の種類", + "description": "Search item type" + }, + "newAttachment": { + "message": "添付ファイルの追加" + }, + "deletedAttachment": { + "message": "削除された添付ファイル" + }, + "deleteAttachmentConfirmation": { + "message": "この添付ファイルを削除してよろしいですか?" + }, + "attachmentSaved": { + "message": "添付ファイルを保存しました。" + }, + "file": { + "message": "ファイル" + }, + "selectFile": { + "message": "ファイルを選択してください。" + }, + "maxFileSize": { + "message": "最大ファイルサイズは500MBです。" + }, + "updateKey": { + "message": "暗号キーを更新するまでこの機能は使用できません。" + }, + "editedFolder": { + "message": "フォルダーを編集しました" + }, + "addedFolder": { + "message": "フォルダーを追加しました" + }, + "deleteFolderConfirmation": { + "message": "フォルダーを削除しますか?" + }, + "deletedFolder": { + "message": "フォルダーを削除しました" + }, + "loginOrCreateNewAccount": { + "message": "安全なデータ保管庫へアクセスするためにログインまたはアカウントを作成してください。" + }, + "createAccount": { + "message": "アカウントの作成" + }, + "logIn": { + "message": "ログイン" + }, + "submit": { + "message": "送信" + }, + "masterPass": { + "message": "マスターパスワード" + }, + "masterPassDesc": { + "message": "マスターパスワードは、パスワード保管庫へのアクセスに使用するパスワードです。あなたのマスターパスワードを忘れないように注意してください。忘れた場合、パスワードを回復する方法はありません。" + }, + "masterPassHintDesc": { + "message": "マスターパスワードのヒントは、パスワードを忘れた場合に役立ちます。" + }, + "reTypeMasterPass": { + "message": "新しいパスワードを再入力" + }, + "masterPassHint": { + "message": "マスターパスワードのヒント (省略可能)" + }, + "settings": { + "message": "設定" + }, + "passwordHint": { + "message": "パスワードのヒント" + }, + "enterEmailToGetHint": { + "message": "マスターパスワードのヒントを受信するアカウントのメールアドレスを入力してください。" + }, + "getMasterPasswordHint": { + "message": "マスターパスワードのヒントを取得する" + }, + "emailRequired": { + "message": "メールアドレスは必須項目です。" + }, + "invalidEmail": { + "message": "無効なメールアドレスです。" + }, + "masterPassRequired": { + "message": "マスターパスワードは必須です。" + }, + "masterPassLength": { + "message": "マスターパスワードは、少なくとも8文字以上で設定してください。" + }, + "masterPassDoesntMatch": { + "message": "マスターパスワードが一致しません。" + }, + "newAccountCreated": { + "message": "新しいアカウントを作成しました!今すぐログインできます。" + }, + "masterPassSent": { + "message": "あなたのマスターパスワードのヒントを記載したメールを送信しました。" + }, + "unexpectedError": { + "message": "予期せぬエラーが発生しました。" + }, + "itemInformation": { + "message": "アイテム情報" + }, + "noItemsInList": { + "message": "表示するアイテムがありません" + }, + "sendVerificationCode": { + "message": "確認コードをメールに送信" + }, + "sendCode": { + "message": "コードを送信" + }, + "codeSent": { + "message": "確認コードを送信しました。" + }, + "verificationCode": { + "message": "認証コード" + }, + "confirmIdentity": { + "message": "続行するには本人確認を行ってください。" + }, + "verificationCodeRequired": { + "message": "認証コードは必須項目です。" + }, + "invalidVerificationCode": { + "message": "認証コードが間違っています" + }, + "continue": { + "message": "続行" + }, + "enterVerificationCodeApp": { + "message": "認証アプリに表示された6桁の認証コードを入力してください。" + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ に送信された6桁の認証コードを入力してください。", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "$EMAIL$ に認証コードを送信しました。", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "情報を保存する" + }, + "sendVerificationCodeEmailAgain": { + "message": "確認コードをメールで再送" + }, + "useAnotherTwoStepMethod": { + "message": "他の2段階認証方法を使用" + }, + "insertYubiKey": { + "message": "YubiKey を USB ポートに挿入し、ボタンをタッチしてください。" + }, + "insertU2f": { + "message": "セキュリティキーを USB ポートに挿入し、ボタンがある場合はボタンをタッチしてください。" + }, + "recoveryCodeDesc": { + "message": "すべての2段階認証プロパイダにアクセスできなくなったときは、リカバリーコードを使用するとアカウントの2段階認証を無効化できます。" + }, + "recoveryCodeTitle": { + "message": "リカバリーコード" + }, + "authenticatorAppTitle": { + "message": "認証アプリ" + }, + "authenticatorAppDesc": { + "message": "Authy や Google 認証システムなどの認証アプリで時限式の認証コードを生成してください。", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP セキュリティキー" + }, + "yubiKeyDesc": { + "message": "YubiKey を使ってアカウントにアクセスできます。 YubiKey 4、4 Nano、4C、NEOに対応しています。" + }, + "duoDesc": { + "message": "Duo Mobile アプリや SMS、電話や U2F セキュリティキーを使って Duo Security で認証します。", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "組織の Duo Security を Duo Mobile アプリや SMS、電話、U2F セキュリティーキーを使用して認証します。", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "アカウントにアクセスするには、WebAuthn 対応のセキュリティキーを使用してください。" + }, + "emailTitle": { + "message": "メールアドレス" + }, + "emailDesc": { + "message": "確認コードをメールにお送りします。" + }, + "loginUnavailable": { + "message": "ログインできません。" + }, + "noTwoStepProviders": { + "message": "このアカウントは2段階認証が有効ですが、このブラウザに対応した2段階認証プロパイダが一つも設定されていません。" + }, + "noTwoStepProviders2": { + "message": "より幅広い端末に対応した認証プロパイダを追加してください。" + }, + "twoStepOptions": { + "message": "2段階認証オプション" + }, + "selfHostedEnvironment": { + "message": "セルフホスティング環境" + }, + "selfHostedEnvironmentFooter": { + "message": "セルフホスティングしている Bitwarden のベース URL を指定してください。" + }, + "customEnvironment": { + "message": "カスタム環境" + }, + "customEnvironmentFooter": { + "message": "上級者向けです。各サービスのベース URL を個別に指定できます。" + }, + "baseUrl": { + "message": "サーバー URL" + }, + "apiUrl": { + "message": "API サーバー URL" + }, + "webVaultUrl": { + "message": "ウェブ保管庫サーバー URL" + }, + "identityUrl": { + "message": "ID サーバー URL" + }, + "notificationsUrl": { + "message": "通知サーバー URL" + }, + "iconsUrl": { + "message": "アイコンサーバー URL" + }, + "environmentSaved": { + "message": "環境 URL を保存しました。" + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "はい" + }, + "no": { + "message": "いいえ" + }, + "overwritePassword": { + "message": "パスワードを上書き" + }, + "learnMore": { + "message": "詳細情報" + }, + "featureUnavailable": { + "message": "サービスが利用できません" + }, + "loggedOut": { + "message": "ログアウトしました" + }, + "loginExpired": { + "message": "ログインセッションの有効期限が切れています。" + }, + "logOutConfirmation": { + "message": "ログアウトしてもよろしいですか?" + }, + "logOut": { + "message": "ログアウト" + }, + "addNewLogin": { + "message": "新しいログインの追加" + }, + "addNewItem": { + "message": "新しいアイテムの追加" + }, + "addNewFolder": { + "message": "新規フォルダーの追加" + }, + "view": { + "message": "表示" + }, + "account": { + "message": "アカウント" + }, + "loading": { + "message": "読み込み中…" + }, + "lockVault": { + "message": "保管庫をロック" + }, + "passwordGenerator": { + "message": "パスワード生成ツール" + }, + "contactUs": { + "message": "お問い合わせ" + }, + "getHelp": { + "message": "ヘルプ" + }, + "fileBugReport": { + "message": "バグレポートを送信" + }, + "blog": { + "message": "ブログ" + }, + "followUs": { + "message": "フォロー" + }, + "syncVault": { + "message": "保管庫の同期" + }, + "changeMasterPass": { + "message": "マスターパスワードの変更" + }, + "changeMasterPasswordConfirmation": { + "message": "マスターパスワードは bitwarden.com ウェブ保管庫で変更できます。ウェブサイトを開きますか?" + }, + "fingerprintPhrase": { + "message": "パスフレーズ", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "アカウントのパスフレーズ", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "ウェブ保管庫を開く" + }, + "getMobileApp": { + "message": "モバイルアプリを取得" + }, + "getBrowserExtension": { + "message": "ブラウザの拡張機能を取得" + }, + "syncingComplete": { + "message": "同期が完了しました" + }, + "syncingFailed": { + "message": "同期に失敗しました" + }, + "yourVaultIsLocked": { + "message": "保管庫がロックされています。開くにはマスターパスワードを入力してください。" + }, + "unlock": { + "message": "ロック解除" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ の $EMAIL$ としてログインしました。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "マスターパスワードが間違っています" + }, + "twoStepLoginConfirmation": { + "message": "2段階認証を使うと、ログイン時にセキュリティキーや認証アプリ、SMS、電話やメールでの認証を必要にすることでアカウントをさらに安全に出来ます。2段階認証は bitwarden.com ウェブ保管庫で有効化できます。ウェブサイトを開きますか?" + }, + "twoStepLogin": { + "message": "2段階認証" + }, + "vaultTimeout": { + "message": "保管庫のタイムアウト" + }, + "vaultTimeoutDesc": { + "message": "保管庫がタイムアウトし、選択したアクションを実行するタイミングを選択します。" + }, + "immediately": { + "message": "すぐに" + }, + "tenSeconds": { + "message": "10秒" + }, + "twentySeconds": { + "message": "20秒" + }, + "thirtySeconds": { + "message": "30秒" + }, + "oneMinute": { + "message": "1分" + }, + "twoMinutes": { + "message": "2分" + }, + "fiveMinutes": { + "message": "5分" + }, + "fifteenMinutes": { + "message": "15分" + }, + "thirtyMinutes": { + "message": "30分" + }, + "oneHour": { + "message": "1時間" + }, + "fourHours": { + "message": "4時間" + }, + "onIdle": { + "message": "アイドル時" + }, + "onSleep": { + "message": "スリープ時" + }, + "onLocked": { + "message": "ロック時" + }, + "onRestart": { + "message": "再起動時" + }, + "never": { + "message": "なし" + }, + "security": { + "message": "セキュリティ" + }, + "clearClipboard": { + "message": "クリップボードの消去", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "選択した時間が経過した後、自動的にクリップボードを消去します。", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "ウェブサイトアイコンの無効化" + }, + "disableFaviconDesc": { + "message": "保管庫のアイテム毎にウェブサイトのアイコンを表示します。" + }, + "enableMinToTray": { + "message": "トレイアイコンに最小化" + }, + "enableMinToTrayDesc": { + "message": "ウインドウを最小化するとき、システムトレイにアイコンを表示するようにします。" + }, + "enableMinToMenuBar": { + "message": "メニューバーに最小化" + }, + "enableMinToMenuBarDesc": { + "message": "ウインドウを最小化するとき、メニューバーにアイコンを表示するようにします。" + }, + "enableCloseToTray": { + "message": "トレイアイコンへ閉じる" + }, + "enableCloseToTrayDesc": { + "message": "ウインドウを閉じたとき、システムトレイにアイコンを表示するようにします。" + }, + "enableCloseToMenuBar": { + "message": "閉じてメニューバーに表示" + }, + "enableCloseToMenuBarDesc": { + "message": "ウインドウを閉じたとき、メニューバーにアイコンを表示するようにします。" + }, + "enableTray": { + "message": "トレイアイコンの有効化" + }, + "enableTrayDesc": { + "message": "システムトレイにアイコンを常に表示します。" + }, + "startToTray": { + "message": "起動時にトレイアイコンのみ表示" + }, + "startToTrayDesc": { + "message": "アプリを初めて起動した際、システムトレイにアイコンを表示するだけにします。" + }, + "startToMenuBar": { + "message": "起動してメニューバーに表示" + }, + "startToMenuBarDesc": { + "message": "アプリを初めて起動した際、メニューバーにアイコンを表示するだけにします。" + }, + "openAtLogin": { + "message": "ログイン時に自動的に起動" + }, + "openAtLoginDesc": { + "message": "Bitwarden デスクトップアプリケーションをログイン時に自動的に起動します。" + }, + "alwaysShowDock": { + "message": "常にドックに表示" + }, + "alwaysShowDockDesc": { + "message": "メニューバーに最小化した場合でも、Bitwarden アイコンを表示します。" + }, + "confirmTrayTitle": { + "message": "トレイの無効化の確認" + }, + "confirmTrayDesc": { + "message": "この設定を無効にすると、他のすべてのトレイ関連設定も無効になります。" + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "アプリで使用する言語を変更します。再起動が必要です。" + }, + "theme": { + "message": "テーマ" + }, + "themeDesc": { + "message": "アプリのテーマカラーを変更します。" + }, + "dark": { + "message": "ダーク", + "description": "Dark color" + }, + "light": { + "message": "ライト", + "description": "Light color" + }, + "copy": { + "message": "コピー", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "更新を確認" + }, + "version": { + "message": "バージョン $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "再起動して更新" + }, + "restartToUpdateDesc": { + "message": "バージョン $VERSION_NUM$ をインストールする準備ができました。インストールを完了するにはアプリを再起動する必要があります。再起動して更新しますか?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "更新があります" + }, + "updateAvailableDesc": { + "message": "更新が見つかりました。今すぐダウンロードしますか?" + }, + "restart": { + "message": "再起動" + }, + "later": { + "message": "後で" + }, + "noUpdatesAvailable": { + "message": "現在更新はありません。最新バージョンを使用しています。" + }, + "updateError": { + "message": "更新エラー" + }, + "unknown": { + "message": "不明" + }, + "copyUsername": { + "message": "ユーザー名のコピー" + }, + "copyNumber": { + "message": "番号のコピー", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "セキュリティコードのコピー", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "プレミアム会員" + }, + "premiumManage": { + "message": "会員情報の管理" + }, + "premiumManageAlert": { + "message": "会員情報は bitwarden.com ウェブ保管庫で管理できます。ウェブサイトを開きますか?" + }, + "premiumRefresh": { + "message": "会員情報の更新" + }, + "premiumNotCurrentMember": { + "message": "あなたは現在プレミアム会員ではありません。" + }, + "premiumSignUpAndGet": { + "message": "プレミアム会員に登録すると以下の特典を得られます:" + }, + "premiumSignUpStorage": { + "message": "1GB の暗号化されたファイルストレージ。" + }, + "premiumSignUpTwoStep": { + "message": "YubiKey、FIDO U2F、Duoなどの追加の2段階認証ログインオプション" + }, + "premiumSignUpReports": { + "message": "保管庫を安全に保つための、パスワードやアカウントの健全性、データ侵害に関するレポート。" + }, + "premiumSignUpTotp": { + "message": "保管庫内での2段階認証コード生成" + }, + "premiumSignUpSupport": { + "message": "優先カスタマーサポート" + }, + "premiumSignUpFuture": { + "message": "将来のプレミアム機能すべて(詳細は近日公開予定!)" + }, + "premiumPurchase": { + "message": "プレミアム会員に加入" + }, + "premiumPurchaseAlert": { + "message": "プレミアム会員権は bitwarden.com ウェブ保管庫で購入できます。ウェブサイトを開きますか?" + }, + "premiumCurrentMember": { + "message": "あなたはプレミアム会員です!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden を支援いただき、ありがとうございます。" + }, + "premiumPrice": { + "message": "全部で年間たった$PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "更新完了" + }, + "passwordHistory": { + "message": "パスワードの履歴" + }, + "clear": { + "message": "消去する", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "表示するパスワードがありません" + }, + "undo": { + "message": "元に戻す" + }, + "redo": { + "message": "やり直し" + }, + "cut": { + "message": "切り取り", + "description": "Cut to clipboard" + }, + "paste": { + "message": "貼り付け", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "すべて選択" + }, + "zoomIn": { + "message": "拡大" + }, + "zoomOut": { + "message": "縮小" + }, + "resetZoom": { + "message": "拡大をリセット" + }, + "toggleFullScreen": { + "message": "全画面表示の切り替え" + }, + "reload": { + "message": "再読み込み" + }, + "toggleDevTools": { + "message": "開発者ツールを表示" + }, + "minimize": { + "message": "最小化", + "description": "Minimize window" + }, + "zoom": { + "message": "ズーム" + }, + "bringAllToFront": { + "message": "すべてを手前に移動", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Bitwarden について" + }, + "services": { + "message": "サービス" + }, + "hideBitwarden": { + "message": "Bitwarden を隠す" + }, + "hideOthers": { + "message": "他を隠す" + }, + "showAll": { + "message": "すべて表示" + }, + "quitBitwarden": { + "message": "Bitwarden の終了" + }, + "valueCopied": { + "message": "$VALUE$ をコピーしました", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "ヘルプ" + }, + "window": { + "message": "ウィンドウ" + }, + "checkPassword": { + "message": "パスワードが漏洩していないか確認する" + }, + "passwordExposed": { + "message": "このパスワードは過去に$VALUE$回漏洩したことがあるため、変更するべきです。", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "このパスワードは過去に漏洩したデータ内にはないため、安全であると思われます。" + }, + "baseDomain": { + "message": "ベースドメイン", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "ドメイン名", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "ホスト", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "完全一致" + }, + "startsWith": { + "message": "前方一致" + }, + "regEx": { + "message": "正規表現", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "一致検出方法", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "デフォルトの一致検出方法", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "オプションの切り替え" + }, + "organization": { + "message": "組織", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "デフォルト" + }, + "exit": { + "message": "終了" + }, + "showHide": { + "message": "表示 / 非表示", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "トレイに隠す" + }, + "alwaysOnTop": { + "message": "常に最前面", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "更新日", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "パスワード更新日", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "保管庫のエクスポート" + }, + "fileFormat": { + "message": "ファイル形式" + }, + "warning": { + "message": "警告", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "保管庫のエクスポートの確認" + }, + "exportWarningDesc": { + "message": "このエクスポートデータは暗号化されていない形式の保管庫データを含んでいます。メールなどのセキュリティ保護されていない方法で共有したり保管したりしないでください。使用した後はすぐに削除してください。" + }, + "encExportKeyWarningDesc": { + "message": "このエクスポートは、アカウントの暗号化キーを使用してデータを暗号化します。 暗号化キーをローテーションした場合は、このエクスポートファイルを復号することはできなくなるため、もう一度エクスポートする必要があります。" + }, + "encExportAccountWarningDesc": { + "message": "アカウント暗号化キーは各 Bitwarden ユーザーアカウントに固有であるため、暗号化されたエクスポートを別のアカウントにインポートすることはできません。" + }, + "noOrganizationsList": { + "message": "あなたはどの組織にも属していません。組織では他のユーザーとアイテムを安全に共有できます。" + }, + "noCollectionsInList": { + "message": "表示するコレクションがありません" + }, + "ownership": { + "message": "所有者" + }, + "whoOwnsThisItem": { + "message": "このアイテムは誰が所有していますか?" + }, + "strong": { + "message": "強力", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "良好", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "脆弱", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "脆弱なマスターパスワード" + }, + "weakMasterPasswordDesc": { + "message": "設定されたマスターパスワードの強度は脆弱です。Bitwarden アカウントを適切に保護するために、強力なマスターパスワード(またはパスフレーズ)を使用すべきです。本当にこのマスターパスワードを使用しますか?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "PIN でロック解除" + }, + "setYourPinCode": { + "message": "Bitwarden のロックを解除するための PIN コードを設定します。アプリから完全にログアウトすると、PIN 設定はリセットされます。" + }, + "pinRequired": { + "message": "PIN コードが必要です。" + }, + "invalidPin": { + "message": "PIN コードが間違っています。" + }, + "unlockWithWindowsHello": { + "message": "Windows Hello でロック解除" + }, + "windowsHelloConsentMessage": { + "message": "Bitwarden の認証を行います。" + }, + "unlockWithTouchId": { + "message": "Touch ID でロック解除" + }, + "touchIdConsentMessage": { + "message": "Bitwarden の認証を行います。" + }, + "noAutoPromptWindowsHello": { + "message": "起動時に Windows Hello のプロンプトを表示しない" + }, + "noAutoPromptTouchId": { + "message": "起動時に Touch ID を要求しない" + }, + "lockWithMasterPassOnRestart": { + "message": "再起動時にマスターパスワードでロック" + }, + "preferences": { + "message": "設定" + }, + "enableMenuBar": { + "message": "メニューバーアイコンを有効化" + }, + "enableMenuBarDesc": { + "message": "メニューバーに常にアイコンを表示します。" + }, + "hideToMenuBar": { + "message": "メニューバーに隠す" + }, + "selectOneCollection": { + "message": "最低でも一つのコレクションを選んでください。" + }, + "premiumUpdated": { + "message": "プレミアムにアップグレードしました。" + }, + "restore": { + "message": "リストア" + }, + "premiumManageAlertAppStore": { + "message": "App Store でサブスクリプションを管理できます。今すぐ開きますか?" + }, + "legal": { + "message": "法的事項", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "サービス利用規約" + }, + "privacyPolicy": { + "message": "プライバシーポリシー" + }, + "unsavedChangesConfirmation": { + "message": "本当に閉じますか?今閉じると変更した情報は保存されません。" + }, + "unsavedChangesTitle": { + "message": "変更が保存されていません" + }, + "clone": { + "message": "複製" + }, + "passwordGeneratorPolicyInEffect": { + "message": "一つ以上の組織のポリシーがパスワード生成の設定に影響しています。" + }, + "vaultTimeoutAction": { + "message": "保管庫タイムアウト時のアクション" + }, + "vaultTimeoutActionLockDesc": { + "message": "ロックされた保管庫にアクセスするには、マスターパスワードを再入力してください。" + }, + "vaultTimeoutActionLogOutDesc": { + "message": "ログアウトした保管庫にアクセスするには、再認証してください。" + }, + "lock": { + "message": "ロック", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "ごみ箱", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "ごみ箱を検索" + }, + "permanentlyDeleteItem": { + "message": "アイテムを完全に削除" + }, + "permanentlyDeleteItemConfirmation": { + "message": "このアイテムを完全に削除してもよろしいですか?" + }, + "permanentlyDeletedItem": { + "message": "完全に削除されたアイテム" + }, + "restoreItem": { + "message": "アイテムをリストア" + }, + "restoreItemConfirmation": { + "message": "このアイテムをリストアしますか?" + }, + "restoredItem": { + "message": "リストアされたアイテム" + }, + "permanentlyDelete": { + "message": "完全に削除" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ログアウトすると保管庫へのすべてのアクセスが制限され、タイムアウト期間後にオンライン認証が必要になります。 この設定を使用してもよろしいですか?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "タイムアウトアクションの確認" + }, + "enterpriseSingleSignOn": { + "message": "組織のシングルサインオン" + }, + "setMasterPassword": { + "message": "マスターパスワードを設定" + }, + "ssoCompleteRegistration": { + "message": "SSO ログインを完了するには、保管庫にアクセス・保護するためのマスターパスワードを設定してください。" + }, + "newMasterPass": { + "message": "新しいマスターパスワード" + }, + "confirmNewMasterPass": { + "message": "新しいマスターパスワードの確認" + }, + "masterPasswordPolicyInEffect": { + "message": "組織が求めるマスターパスワードの要件:" + }, + "policyInEffectMinComplexity": { + "message": "複雑度は最低$SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "長さは最低$LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "大文字が最低1つ必要" + }, + "policyInEffectLowercase": { + "message": "小文字が最低1つ必要" + }, + "policyInEffectNumbers": { + "message": "数字が最低1つ必要" + }, + "policyInEffectSpecial": { + "message": "次の記号から1つ以上:$CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "新しいマスターパスワードは最低要件を満たしていません。" + }, + "acceptPolicies": { + "message": "以下に同意しチェックします:" + }, + "acceptPoliciesError": { + "message": "利用規約とプライバシーポリシーを確認してください。" + }, + "enableBrowserIntegration": { + "message": "ブラウザ統合を有効にする" + }, + "enableBrowserIntegrationDesc": { + "message": "ブラウザでの生体認証のためにブラウザ統合を使用します。" + }, + "browserIntegrationMasOnlyTitle": { + "message": "ブラウザ統合はサポートされていません" + }, + "browserIntegrationMasOnlyDesc": { + "message": "残念ながら、ブラウザ統合は、Mac App Storeのバージョンでのみサポートされています。" + }, + "browserIntegrationWindowsStoreTitle": { + "message": "ブラウザ統合に対応していません" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "残念ながらお使いの Microsoft Store のバージョンではブラウザの統合に対応していません。" + }, + "enableBrowserIntegrationFingerprint": { + "message": "ブラウザ統合には認証を必要とする。" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "デスクトップとブラウザ間のリンクを確立する際にパスフレーズを要求することで、さらなるセキュリティ層を有効にします。 有効にすると、接続を確立するたびにユーザーによる確認が必要になります。" + }, + "approve": { + "message": "承認" + }, + "verifyBrowserTitle": { + "message": "ブラウザの接続を確認" + }, + "verifyBrowserDesc": { + "message": "表示されているパスフレーズがブラウザ拡張に表示されているものと同じであることを確認してください。" + }, + "biometricsNotEnabledTitle": { + "message": "生体認証が有効になっていません。" + }, + "biometricsNotEnabledDesc": { + "message": "ブラウザで生体認証を利用するには、最初に設定でデスクトップ生体認証を有効にする必要があります。" + }, + "personalOwnershipSubmitError": { + "message": "組織のポリシーにより、個人保管庫へのアイテムの保存が制限されています。 所有権を組織に変更し、利用可能なコレクションから選択してください。" + }, + "hintEqualsPassword": { + "message": "パスワードのヒントをパスワードと同じにすることはできません。" + }, + "personalOwnershipPolicyInEffect": { + "message": "組織のポリシーは、所有者のオプションに影響を与えています。" + }, + "allSends": { + "message": "すべての Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "ファイル" + }, + "sendTypeText": { + "message": "テキスト" + }, + "searchSends": { + "message": "Send を検索", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send を編集", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "保管庫" + }, + "text": { + "message": "テキスト" + }, + "deletionDate": { + "message": "削除日時" + }, + "deletionDateDesc": { + "message": "Send は指定された日時に完全に削除されます。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "有効期限" + }, + "expirationDateDesc": { + "message": "設定されている場合、この Send へのアクセスは指定された日時に失効します。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "最大アクセス数" + }, + "maxAccessCountDesc": { + "message": "設定されている場合、最大アクセス数に達するとユーザーはこの Send にアクセスできなくなります。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "現在のアクセス数" + }, + "disableSend": { + "message": "誰もアクセスできないように、この Send を無効にする", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "必要に応じて、ユーザーがこの Send にアクセスするためのパスワードを要求します。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "この Send に関するプライベートメモ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send リンク", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send リンク", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Send へのアクセス時に既定でテキストを非表示にする", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "作成した Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "編集済みの Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "削除した Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "新しいパスワード" + }, + "whatTypeOfSend": { + "message": "この Send の種類は何ですか?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send を作成", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "送信するテキスト" + }, + "sendFileDesc": { + "message": "送信するファイル" + }, + "days": { + "message": "$DAYS$日", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1日" + }, + "custom": { + "message": "カスタム" + }, + "deleteSendConfirmation": { + "message": "この Send を削除してもよろしいですか?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Send リンクをクリップボードにコピー", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Send の保存時にクリップボードへリンクをコピーします。" + }, + "sendDisabled": { + "message": "Send 無効", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "組織のポリシーにより、既存の Send のみを削除できます。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "リンクをコピー" + }, + "disabled": { + "message": "無効" + }, + "maxAccessCountReached": { + "message": "最大アクセス数に達しました" + }, + "expired": { + "message": "有効期限切れ" + }, + "pendingDeletion": { + "message": "削除の保留中" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn の認証" + }, + "hideEmail": { + "message": "メールアドレスを受信者に表示しない" + }, + "sendOptionsPolicyInEffect": { + "message": "一つ以上の組織ポリシーが Send の設定に影響しています。" + }, + "emailVerificationRequired": { + "message": "メールアドレスの確認が必要です" + }, + "emailVerificationRequiredDesc": { + "message": "この機能を使用するにはメールアドレスを確認する必要があります。" + }, + "passwordPrompt": { + "message": "マスターパスワードの再要求" + }, + "passwordConfirmation": { + "message": "マスターパスワードの確認" + }, + "passwordConfirmationDesc": { + "message": "この操作は保護されています。続行するには、確認のためにマスターパスワードを再入力してください。" + }, + "updatedMasterPassword": { + "message": "マスターパスワードを更新しました" + }, + "updateMasterPassword": { + "message": "マスターパスワードを更新しました" + }, + "updateMasterPasswordWarning": { + "message": "マスターパスワードは最近組織の管理者によって変更されました。保管庫にアクセスするには、今すぐ更新する必要があります。 続行すると現在のセッションからログアウトし、再度ログインする必要があります。 他のデバイスでのアクティブなセッションは、最大1時間アクティブになり続けることがあります。" + }, + "hours": { + "message": "時間" + }, + "minutes": { + "message": "分" + }, + "vaultTimeoutPolicyInEffect": { + "message": "あなたの組織ポリシーは保管庫のタイムアウトに影響を与えています。最大保管庫のタイムアウト時間は $HOURS$ 時間 $MINUTES$ 分です。", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "保管庫のタイムアウトが組織によって設定された制限を超えています。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自動登録" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "この組織には自動的にパスワードリセットに登録するポリシーがあります。登録すると、組織の管理者はマスターパスワードを変更できます。" + }, + "vaultExportDisabled": { + "message": "保管庫のエクスポートは無効です" + }, + "personalVaultExportPolicyInEffect": { + "message": "1 つまたは複数の組織ポリシーにより、個人の保管庫をエクスポートできません。" + }, + "addAccount": { + "message": "アカウントを追加" + }, + "removeMasterPassword": { + "message": "マスターパスワードを削除する" + }, + "removedMasterPassword": { + "message": "マスターパスワードを削除しました。" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ は自己ホストの鍵サーバで SSO を使用しています。この組織のメンバーのログインにマスターパスワードは必要ありません。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "組織から脱退する" + }, + "leaveOrganizationConfirmation": { + "message": "本当にこの組織から脱退しますか?" + }, + "leftOrganization": { + "message": "組織から脱退しました。" + }, + "ssoKeyConnectorUnavailable": { + "message": "キーコネクターに到達できません。後でもう一度お試しください。" + }, + "lockAllVaults": { + "message": "すべての保管庫をロック" + }, + "accountLimitReached": { + "message": "5つ以上のアカウントに同時にログインすることはできません。" + }, + "accountPreferences": { + "message": "設定" + }, + "appPreferences": { + "message": "アプリ設定 (すべてのアカウント)" + }, + "accountSwitcherLimitReached": { + "message": "アカウントの制限に達しました。別のアカウントを追加するにはアカウントからログアウトしてください。" + }, + "settingsTitle": { + "message": "$EMAIL$ のアプリ設定", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "アカウント切替" + }, + "options": { + "message": "オプション" + }, + "sessionTimeout": { + "message": "セッションがタイムアウトしました。もう一度ログインしてください。" + }, + "exportingPersonalVaultTitle": { + "message": "個人保管庫のエクスポート" + }, + "exportingPersonalVaultDescription": { + "message": "$EMAIL$ に関連付けられた個人用保管庫アイテムのみがエクスポートされます。組織用保管庫アイテムは含まれません。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "ジェネレーター" + }, + "whatWouldYouLikeToGenerate": { + "message": "何を生成しますか?" + }, + "passwordType": { + "message": "パスワードの種類" + }, + "regenerateUsername": { + "message": "ユーザー名を再生成" + }, + "generateUsername": { + "message": "ユーザー名を生成" + }, + "usernameType": { + "message": "ユーザー名の種類" + }, + "plusAddressedEmail": { + "message": "プラス付きのメールアドレス" + }, + "plusAddressedEmailDesc": { + "message": "メールプロバイダのエイリアス機能を使用します。" + }, + "catchallEmail": { + "message": "キャッチオールメール" + }, + "catchallEmailDesc": { + "message": "ドメインに設定されたキャッチオール受信トレイを使用します。" + }, + "random": { + "message": "ランダム" + }, + "randomWord": { + "message": "ランダムな単語" + }, + "websiteName": { + "message": "ウェブサイト名" + }, + "service": { + "message": "サービス" + } +} diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json new file mode 100644 index 0000000000..1b909d5de4 --- /dev/null +++ b/apps/desktop/src/locales/ka/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json new file mode 100644 index 0000000000..1b909d5de4 --- /dev/null +++ b/apps/desktop/src/locales/km/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json new file mode 100644 index 0000000000..20e8bc07a9 --- /dev/null +++ b/apps/desktop/src/locales/kn/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್" + }, + "filters": { + "message": "ಶೋಧಕಗಳು" + }, + "allItems": { + "message": "ಎಲ್ಲಾ ವಸ್ತುಗಳು" + }, + "favorites": { + "message": "ಮೆಚ್ಚುಗೆಗಳು" + }, + "types": { + "message": "ರೀತಿಯ" + }, + "typeLogin": { + "message": "ಲಾಗಿನ್" + }, + "typeCard": { + "message": "ಕಾರ್ಡ್" + }, + "typeIdentity": { + "message": "ಗುರುತಿಸುವಿಕೆ" + }, + "typeSecureNote": { + "message": "ಸುರಕ್ಷಿತ ಟಿಪ್ಪಣಿ" + }, + "folders": { + "message": "ಫೋಲ್ಡರ್‌ಗಳು" + }, + "collections": { + "message": "ಸಂಗ್ರಹಣೆಗಳು" + }, + "searchVault": { + "message": "ವಾಲ್ಟ್ ಹುಡುಕಿ" + }, + "addItem": { + "message": "ಐಟಂ ಸೇರಿಸಿ" + }, + "shared": { + "message": "ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆ" + }, + "share": { + "message": "ಹಂಚಿಕೊಳ್ಳಿ" + }, + "moveToOrganization": { + "message": "ಸಂಸ್ಥೆಗೆ ಸರಿಸಿ" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ ಅನ್ನು $ORGNAME$ ಗೆ ಸರಿಸಲಾಗಿದೆ", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಸರಿಸಲು ನೀವು ಬಯಸುವ ಸಂಸ್ಥೆಯನ್ನು ಆರಿಸಿ. ಸಂಸ್ಥೆಗೆ ಹೋಗುವುದರಿಂದ ವಸ್ತುವಿನ ಮಾಲೀಕತ್ವವನ್ನು ಆ ಸಂಸ್ಥೆಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈ ಐಟಂ ಅನ್ನು ಸರಿಸಿದ ನಂತರ ನೀವು ಇನ್ನು ಮುಂದೆ ಅದರ ನೇರ ಮಾಲೀಕರಾಗಿರುವುದಿಲ್ಲ." + }, + "attachments": { + "message": "ಲಗತ್ತುಗಳು" + }, + "viewItem": { + "message": "ಐಟಂ ವೀಕ್ಷಿಸಿ" + }, + "name": { + "message": "ಹೆಸರು" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "ಯುಆರ್ಐ $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "ಹೊಸ ಯುಆರ್ಐ" + }, + "username": { + "message": "ಬಳಕೆದಾರ ಹೆಸರು" + }, + "password": { + "message": "ಪಾಸ್ವರ್ಡ್" + }, + "passphrase": { + "message": "ಪಾಸ್ಫ್ರೇಸ್" + }, + "editItem": { + "message": "ವಸ್ತುಗಳನ್ನು ಸಂಪಾದಿಸಿ" + }, + "emailAddress": { + "message": "ಇಮೇಲ್ ವಿಳಾಸ" + }, + "verificationCodeTotp": { + "message": "ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳು (TOTP)" + }, + "website": { + "message": "ಜಾಲತಾಣ" + }, + "notes": { + "message": "ಟಿಪ್ಪಣಿಗಳು" + }, + "customFields": { + "message": "ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರಗಳು" + }, + "launch": { + "message": "ಶುರು" + }, + "copyValue": { + "message": "ಮೌಲ್ಯವನ್ನು ನಕಲಿಸಿ", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಿದಾಗ ಕಡಿಮೆ ಮಾಡಿ" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "ಐಟಂನ ಡೇಟಾವನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸುವಾಗ ಕಡಿಮೆ ಮಾಡಿ." + }, + "toggleVisibility": { + "message": "ಗೋಚರತೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ" + }, + "toggleCollapse": { + "message": "ಟಾಗಲ್ ಕುಸಿತ", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "ಕಾರ್ಡುದಾರನ ಹೆಸರು" + }, + "number": { + "message": "ಸಂಖ್ಯೆ" + }, + "brand": { + "message": "ಬ್ರ್ಯಾಂಡ್" + }, + "expiration": { + "message": "ಮುಕ್ತಾಯ" + }, + "securityCode": { + "message": "ಭದ್ರತಾ ಕೋಡ್" + }, + "identityName": { + "message": "ಹೆಸರು ಗುರುತು" + }, + "company": { + "message": "ಕಂಪನಿ" + }, + "ssn": { + "message": "ಸಾಮಾಜಿಕ ಭದ್ರತೆ ಸಂಖ್ಯೆ" + }, + "passportNumber": { + "message": "ಪಾಸ್ಪೋರ್ಟ್ ಸಂಖ್ಯೆ" + }, + "licenseNumber": { + "message": "ಪರವಾನಗಿ ಸಂಖ್ಯೆ" + }, + "email": { + "message": "ಇಮೇಲ್" + }, + "phone": { + "message": "ಫೋನ್‌" + }, + "address": { + "message": "ವಿಳಾಸ" + }, + "premiumRequired": { + "message": "ಪ್ರೀಮಿಯಂ ಅಗತ್ಯವಿದೆ" + }, + "premiumRequiredDesc": { + "message": "ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವ ಅಗತ್ಯವಿದೆ." + }, + "errorOccurred": { + "message": "ದೋಷ ಸಂಭವಿಸಿದೆ." + }, + "error": { + "message": "ದೋಷ" + }, + "january": { + "message": "ಜನವರಿ" + }, + "february": { + "message": "ಫೆಬ್ರವರಿ" + }, + "march": { + "message": "ಮಾರ್ಚ್" + }, + "april": { + "message": "ಏಪ್ರಿಲ್" + }, + "may": { + "message": "ಮೇ" + }, + "june": { + "message": "ಜೂನ್" + }, + "july": { + "message": "ಜುಲೈ" + }, + "august": { + "message": "ಆಗಸ್ಟ್" + }, + "september": { + "message": "ಸೆಪ್ಟೆಂಬರ್" + }, + "october": { + "message": "ಅಕ್ಟೋಬರ್" + }, + "november": { + "message": "ನವೆಂಬರ್" + }, + "december": { + "message": "ಡಿಸೆಂಬರ್" + }, + "ex": { + "message": "ಉದಾಹರಣೆ.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "ಶೀರ್ಷಿಕೆ" + }, + "mr": { + "message": "ಶ್ರೀ" + }, + "mrs": { + "message": "ಶ್ರೀಮತಿ" + }, + "ms": { + "message": "ಎಂ ಎಸ್" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "ಮುಕ್ತಾಯ ತಿಂಗಳು" + }, + "expirationYear": { + "message": "ಮುಕ್ತಾಯ ವರ್ಷ" + }, + "select": { + "message": "ಆಯ್ಕೆಮಾಡಿ" + }, + "other": { + "message": "ಇತರೆ" + }, + "generatePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ" + }, + "type": { + "message": "ಪ್ರಕಾರ" + }, + "firstName": { + "message": "ಮೊದಲ ಹೆಸರು" + }, + "middleName": { + "message": "ಮಧ್ಯದ ಹೆಸರು" + }, + "lastName": { + "message": "ಕೊನೆ ಹೆಸರು" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "ವಿಳಾಸ 1" + }, + "address2": { + "message": "ವಿಳಾಸ 2" + }, + "address3": { + "message": "ವಿಳಾಸ 3" + }, + "cityTown": { + "message": "ನಗರ / ಪಟ್ಟಣ" + }, + "stateProvince": { + "message": "ರಾಜ್ಯ / ಪ್ರಾಂತ್ಯ" + }, + "zipPostalCode": { + "message": "ಪಿನ್ / ಅಂಚೆ ಕೋಡ್" + }, + "country": { + "message": "ದೇಶ" + }, + "save": { + "message": "ಉಳಿಸಿ" + }, + "cancel": { + "message": "ರದ್ದು" + }, + "delete": { + "message": "ಅಳಿಸು" + }, + "favorite": { + "message": "ಮೆಚ್ಚಿನ" + }, + "edit": { + "message": "ಎಡಿಟ್" + }, + "authenticatorKeyTotp": { + "message": "ದೃಢೀಕರಣ ಕೀ (TOTP)" + }, + "folder": { + "message": "ಫೋಲ್ಡರ್" + }, + "newCustomField": { + "message": "ಹೊಸ ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರ" + }, + "value": { + "message": "ಮೌಲ್ಯ" + }, + "dragToSort": { + "message": "ವಿಂಗಡಿಸಲು ಎಳೆಯಿರಿ" + }, + "cfTypeText": { + "message": "ಪಠ್ಯ" + }, + "cfTypeHidden": { + "message": "ಮರೆಮಾಡಲಾಗಿದೆ" + }, + "cfTypeBoolean": { + "message": "ಬೂಲಿಯನ್" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "ತೆಗೆ" + }, + "nameRequired": { + "message": "ಹೆಸರೊಂದು ಅಗತ್ಯವಿದೆ." + }, + "addedItem": { + "message": "ಐಟಂ ಸೇರಿಸಲಾಗಿದೆ" + }, + "editedItem": { + "message": "ಐಟಂ ಸಂಪಾದಿಸಲಾಗಿದೆ" + }, + "deleteItem": { + "message": "ಐಟಂ ಅಳಿಸಿ" + }, + "deleteFolder": { + "message": "ಫೋಲ್ಡರ್ ಅಳಿಸಿ" + }, + "deleteAttachment": { + "message": "ಲಗತ್ತನ್ನು ಅಳಿಸಿ" + }, + "deleteItemConfirmation": { + "message": "ನೀವು ನಿಜವಾಗಿಯೂ ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲು ಬಯಸುವಿರಾ?" + }, + "deletedItem": { + "message": "ಐಟಂ ಅನ್ನು ಅನುಪಯುಕ್ತಕ್ಕೆ ಕಳುಹಿಸಲಾಗಿದೆ" + }, + "overwritePasswordConfirmation": { + "message": "ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ತಿದ್ದಿಬರೆಯಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "ಫೋಲ್ಡರ್ ಇಲ್ಲ", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "editFolder": { + "message": "ಫೋಲ್ಡರ್ ಸಂಪಾದಿಸಿ" + }, + "regeneratePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಪುನರುತ್ಪಾದಿಸಿ" + }, + "copyPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ನಕಲಿಸಿ" + }, + "copyUri": { + "message": "URI ಅನ್ನು ನಕಲಿಸಿ" + }, + "copyVerificationCodeTotp": { + "message": "ನಕಲಿಸಿ ಪರಿಶೀಲನೆ ಕೋಡ್ (TOTP)" + }, + "length": { + "message": "ಉದ್ದ" + }, + "numWords": { + "message": "ಪದಗಳ ಸಂಖ್ಯೆ" + }, + "wordSeparator": { + "message": "ಪದ ವಿಭಜಕ" + }, + "capitalize": { + "message": "ದೊಡ್ಡಕ್ಷರ ಮಾಡಿ", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ" + }, + "close": { + "message": "ಮುಚ್ಚಿ" + }, + "minNumbers": { + "message": "ಕನಿಷ್ಠ ಸಂಖ್ಯೆಗಳು" + }, + "minSpecial": { + "message": "ಕನಿಷ್ಠ ವಿಶೇಷ", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "ಅಸ್ಪಷ್ಟ ಅಕ್ಷರಗಳನ್ನು ತಪ್ಪಿಸಿ" + }, + "searchCollection": { + "message": "ಸಂಗ್ರಹಣೆ ಹುಡುಕಿ" + }, + "searchFolder": { + "message": "ಫೋಲ್ಡರ್ ಹುಡುಕಿ" + }, + "searchFavorites": { + "message": "ಮೆಚ್ಚುಗೆಗಳಲ್ಲಿ ಶೋಧ" + }, + "searchType": { + "message": "ಹುಡುಕಾಟ ಪ್ರಕಾರ", + "description": "Search item type" + }, + "newAttachment": { + "message": "ಹೊಸ ಲಗತ್ತನ್ನು ಸೇರಿಸಿ" + }, + "deletedAttachment": { + "message": "ಲಗತ್ತು ಅಳಿಸಲಾಗಿದೆ" + }, + "deleteAttachmentConfirmation": { + "message": "ಈ ಲಗತ್ತನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "attachmentSaved": { + "message": "ಲಗತ್ತನ್ನು ಉಳಿಸಲಾಗಿದೆ." + }, + "file": { + "message": "ಫೈಲ್" + }, + "selectFile": { + "message": "ಕಡತವನ್ನು ಆಯ್ಕೆಮಾಡು." + }, + "maxFileSize": { + "message": "ಗರಿಷ್ಠ ಫೈಲ್ ಗಾತ್ರ 500 ಎಂಬಿ." + }, + "updateKey": { + "message": "ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವವರೆಗೆ ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ." + }, + "editedFolder": { + "message": "ಫೋಲ್ಡರ್ ತಿದ್ದಲಾಗಿದೆ" + }, + "addedFolder": { + "message": "ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "deleteFolderConfirmation": { + "message": "ನೀವು ಈ ಕಡತಕೋಶವನ್ನು ಖಚಿತವಾಗಿಯೂ ಅಳಿಸಬಯಸುವಿರಾ?" + }, + "deletedFolder": { + "message": "ಫೋಲ್ಡರ್ ಅಳಿಸಿ" + }, + "loginOrCreateNewAccount": { + "message": "ನಿಮ್ಮ ಸುರಕ್ಷಿತ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಲಾಗ್ ಇನ್ ಮಾಡಿ ಅಥವಾ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಿ." + }, + "createAccount": { + "message": "ಖಾತೆ ತೆರೆ" + }, + "logIn": { + "message": "ಲಾಗಿನ್" + }, + "submit": { + "message": "ಒಪ್ಪಿಸು" + }, + "masterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್" + }, + "masterPassDesc": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ನೀವು ಬಳಸುವ ಪಾಸ್ವರ್ಡ್ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಆಗಿದೆ. ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು ಮರೆಯದಿರುವುದು ಬಹಳ ಮುಖ್ಯ. ನೀವು ಅದನ್ನು ಮರೆತ ಸಂದರ್ಭದಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಪಡೆಯಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ." + }, + "masterPassHintDesc": { + "message": "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು ಮರೆತರೆ ಅದನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ." + }, + "reTypeMasterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರು-ಟೈಪ್ ಮಾಡಿ" + }, + "masterPassHint": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಸುಳಿವು (ಐಚ್ಛಿಕ)" + }, + "settings": { + "message": "ಸೆಟ್ಟಿಂಗ್‍ಗಳು" + }, + "passwordHint": { + "message": "ಪಾಸ್ವರ್ಡ್ ಸುಳಿವು" + }, + "enterEmailToGetHint": { + "message": "ವಿಸ್ತರಣೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮೆನುವಿನಲ್ಲಿರುವ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಐಕಾನ್ ಟ್ಯಾಪ್ ಮಾಡಿ." + }, + "getMasterPasswordHint": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಸುಳಿವನ್ನು ಪಡೆಯಿರಿ" + }, + "emailRequired": { + "message": "ಇಮೇಲ್ ವಿಳಾಸದ ಅಗತ್ಯವಿದೆ." + }, + "invalidEmail": { + "message": "ಅಮಾನ್ಯ ಇಮೇಲ್ ವಿಳಾಸ." + }, + "masterPassRequired": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ." + }, + "masterPassLength": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಕನಿಷ್ಠ 8 ಅಕ್ಷರಗಳಷ್ಟು ಉದ್ದವಾಗಿರಬೇಕು." + }, + "masterPassDoesntMatch": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ದೃಢೀಕರಣವು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ." + }, + "newAccountCreated": { + "message": "ನಿಮ್ಮ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಲಾಗಿದೆ! ನೀವು ಈಗ ಲಾಗ್ ಇನ್ ಮಾಡಬಹುದು." + }, + "masterPassSent": { + "message": "ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವಿನೊಂದಿಗೆ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿದ್ದೇವೆ." + }, + "unexpectedError": { + "message": "ಅನಿರೀಕ್ಷಿತ ದೋಷ ಸಂಭವಿಸಿದೆ." + }, + "itemInformation": { + "message": "ಐಟಂ ಮಾಹಿತಿ" + }, + "noItemsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಐಟಂಗಳಿಲ್ಲ." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳು" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್ ಅಗತ್ಯವಿದೆ." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "ಮುಂದುವರಿಸಿ" + }, + "enterVerificationCodeApp": { + "message": "ನಿಮ್ಮ ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ 6 ಅಂಕಿಯ ಪರಿಶೀಲನಾ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ಗೆ ಇಮೇಲ್ ಮಾಡಲಾದ 6 ಅಂಕಿಯ ಪರಿಶೀಲನಾ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "ಪರಿಶೀಲನೆ ಇಮೇಲ್ $EMAIL$ ಗೆ ಕಳುಹಿಸಲಾಗಿದೆ.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "ನನ್ನನ್ನು ನೆನಪಿನಲ್ಲಿ ಇಡು" + }, + "sendVerificationCodeEmailAgain": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್ ಇಮೇಲ್ ಅನ್ನು ಮತ್ತೆ ಕಳುಹಿಸಿ" + }, + "useAnotherTwoStepMethod": { + "message": "ಮತ್ತೊಂದು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ವಿಧಾನವನ್ನು ಬಳಸಿ" + }, + "insertYubiKey": { + "message": "ನಿಮ್ಮ ಯುಬಿಕಿಯನ್ನು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್ಗೆ ಸೇರಿಸಿ, ನಂತರ ಅದರ ಗುಂಡಿಯನ್ನು ಸ್ಪರ್ಶಿಸಿ." + }, + "insertU2f": { + "message": "ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಯುಎಸ್‌ಬಿ ಪೋರ್ಟ್ಗೆ ನಿಮ್ಮ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಸೇರಿಸಿ. ಅದು ಬಟನ್ ಹೊಂದಿದ್ದರೆ, ಅದನ್ನು ಸ್ಪರ್ಶಿಸಿ." + }, + "recoveryCodeDesc": { + "message": "ನಿಮ್ಮ ಎಲ್ಲಾ ಎರಡು ಅಂಶ ಪೂರೈಕೆದಾರರಿಗೆ ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಂಡಿದ್ದೀರಾ? ನಿಮ್ಮ ಖಾತೆಯಿಂದ ಎಲ್ಲಾ ಎರಡು ಅಂಶ ಪೂರೈಕೆದಾರರನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನಿಮ್ಮ ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ಬಳಸಿ." + }, + "recoveryCodeTitle": { + "message": "ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್" + }, + "authenticatorAppTitle": { + "message": "ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್" + }, + "authenticatorAppDesc": { + "message": "ಸಮಯ ಆಧಾರಿತ ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳನ್ನು ರಚಿಸಲು ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಸಿ (ಆಥಿ ಅಥವಾ ಗೂಗಲ್ ಅಥೆಂಟಿಕೇಟರ್).", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "ಯುಬಿಕೆ ಒಟಿಪಿ ಭದ್ರತಾ ಕೀ" + }, + "yubiKeyDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಯುಬಿಕೆ ಬಳಸಿ. ಯುಬಿಕೆ 4, 4 ನ್ಯಾನೋ, 4 ಸಿ ಮತ್ತು ಎನ್ಇಒ ಸಾಧನಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ." + }, + "duoDesc": { + "message": "ಡ್ಯುಯೊ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್, ಎಸ್‌ಎಂಎಸ್, ಫೋನ್ ಕರೆ ಅಥವಾ ಯು 2 ಎಫ್ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಡ್ಯುಯೊ ಸೆಕ್ಯುರಿಟಿಯೊಂದಿಗೆ ಪರಿಶೀಲಿಸಿ.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "ಡ್ಯುಯೊ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್, ಎಸ್‌ಎಂಎಸ್, ಫೋನ್ ಕರೆ ಅಥವಾ ಯು 2 ಎಫ್ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಸಂಸ್ಥೆಗಾಗಿ ಡ್ಯುಯೊ ಸೆಕ್ಯುರಿಟಿಯೊಂದಿಗೆ ಪರಿಶೀಲಿಸಿ.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಯಾವುದೇ ವೆಬ್‌ಆಥ್ನ್ ಸಕ್ರಿಯಗೊಳಿಸಿದ ಭದ್ರತಾ ಕೀಲಿಯನ್ನು ಬಳಸಿ." + }, + "emailTitle": { + "message": "ಇಮೇಲ್" + }, + "emailDesc": { + "message": "ಪರಿಶೀಲನೆ ಕೋಡ್‌ಗಳನ್ನು ನಿಮಗೆ ಇಮೇಲ್ ಮಾಡಲಾಗುತ್ತದೆ." + }, + "loginUnavailable": { + "message": "ಲಾಗಿನ್ ಲಭ್ಯವಿಲ್ಲ" + }, + "noTwoStepProviders": { + "message": "ಈ ಖಾತೆಯು ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದೆ, ಆದಾಗ್ಯೂ, ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಎರಡು-ಹಂತದ ಪೂರೈಕೆದಾರರಲ್ಲಿ ಯಾರೂ ಈ ವೆಬ್ ಬ್ರೌಸರ್‌ನಿಂದ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ." + }, + "noTwoStepProviders2": { + "message": "ಸಾಧನಗಳಲ್ಲಿ (ಅಥೆಂಟಿಕೇಟರ್ ಅಪ್ಲಿಕೇಶನ್‌ನಂತಹ) ಉತ್ತಮವಾಗಿ ಬೆಂಬಲಿತವಾಗಿರುವ ಹೆಚ್ಚುವರಿ ಪೂರೈಕೆದಾರರನ್ನು ದಯವಿಟ್ಟು ಸೇರಿಸಿ." + }, + "twoStepOptions": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್ ಆಯ್ಕೆಗಳು" + }, + "selfHostedEnvironment": { + "message": "ಸ್ವಯಂ ಆತಿಥೇಯ ಪರಿಸರ" + }, + "selfHostedEnvironmentFooter": { + "message": "ನಿಮ್ಮ ಆನ್-ಪ್ರಮೇಯ ಹೋಸ್ಟ್ ಮಾಡಿದ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಸ್ಥಾಪನೆಯ ಮೂಲ URL ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ." + }, + "customEnvironment": { + "message": "ಕಸ್ಟಮ್ ಪರಿಸರ" + }, + "customEnvironmentFooter": { + "message": "ಸುಧಾರಿತ ಬಳಕೆದಾರರಿಗಾಗಿ. ನೀವು ಪ್ರತಿ ಸೇವೆಯ ಮೂಲ URL ಅನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು." + }, + "baseUrl": { + "message": "ಸರ್ವರ್ URL" + }, + "apiUrl": { + "message": "API ಸರ್ವರ್ URL" + }, + "webVaultUrl": { + "message": "ವೆಬ್ ವಾಲ್ಟ್ ಸರ್ವರ್ URL" + }, + "identityUrl": { + "message": "ಗುರುತಿನ ಸರ್ವರ್ URL" + }, + "notificationsUrl": { + "message": "ಅಧಿಸೂಚನೆಗಳು ಸರ್ವರ್ URL" + }, + "iconsUrl": { + "message": "ಚಿಹ್ನೆಗಳು ಸರ್ವರ್ URL" + }, + "environmentSaved": { + "message": "ಪರಿಸರ URL ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ." + }, + "ok": { + "message": "ಸರಿ" + }, + "yes": { + "message": "ಹೌದು" + }, + "no": { + "message": "ಇಲ್ಲ" + }, + "overwritePassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬದಲಿಸಿ" + }, + "learnMore": { + "message": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ" + }, + "featureUnavailable": { + "message": "ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ" + }, + "loggedOut": { + "message": "ಲಾಗ್ ಔಟ್" + }, + "loginExpired": { + "message": "ನಿಮ್ಮ ಲಾಗಿನ್ ಸೆಷನ್ ಅವಧಿ ಮೀರಿದೆ." + }, + "logOutConfirmation": { + "message": "ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "logOut": { + "message": "ಲಾಗ್ ಔಟ್" + }, + "addNewLogin": { + "message": "ಹೊಸ ಲಾಗಿನ್ ಸೇರಿಸಿ" + }, + "addNewItem": { + "message": "ಐಟಂ ಸೇರಿಸಿ" + }, + "addNewFolder": { + "message": "ಹೊಸ ಫೋಲ್ಡರ್ ಸೇರಿಸಿ" + }, + "view": { + "message": "ವೀಕ್ಷಣೆ" + }, + "account": { + "message": "ಖಾತೆ" + }, + "loading": { + "message": "ಲೋಡ್‌ಆಗುತ್ತಿದೆ..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "ಪಾಸ್ವರ್ಡ್ ಜನರೇಟರ್" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "ದೋಷ ವರದಿಯನ್ನು ಫೈಲ್ ಮಾಡಿ" + }, + "blog": { + "message": "ಬ್ಲಾಗ್" + }, + "followUs": { + "message": "ನಮ್ಮನ್ನು ಅನುಸರಿಸಿ" + }, + "syncVault": { + "message": "ಸಿಂಕ್ ವಾಲ್ಟ್" + }, + "changeMasterPass": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಿ" + }, + "changeMasterPasswordConfirmation": { + "message": "ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನೀವು bitwarden.com ವೆಬ್ ವಾಲ್ಟ್‌ನಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "fingerprintPhrase": { + "message": "ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಫ್ರೇಸ್", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "ನಿಮ್ಮ ಖಾತೆಯ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ನುಡಿಗಟ್ಟು", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "ವೆಬ್ ಚಾವಣಿಗೆ ಹೋಗಿ" + }, + "getMobileApp": { + "message": "ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ ಪಡೆಯಿರಿ" + }, + "getBrowserExtension": { + "message": "ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆ ಪಡೆಯಿರಿ" + }, + "syncingComplete": { + "message": "ಒಡವಾಗುನಂಟು ಪೂರ್ಣಗೊಂಡಿದೆ" + }, + "syncingFailed": { + "message": "ಸಿಂಕ್ ವಿಫಲಗೊಂಡಿದೆ" + }, + "yourVaultIsLocked": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಲಾಕ್ ಆಗಿದೆ. ಮುಂದುವರೆಯಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ." + }, + "unlock": { + "message": "ಅನ್‌ಲಾಕ್ ಮಾಡಿ" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ನಲ್ಲಿ $EMAIL$ಆಗಿ ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "ಅಮಾನ್ಯ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್" + }, + "twoStepLoginConfirmation": { + "message": "ಭದ್ರತಾ ಕೀ, ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್, ಎಸ್‌ಎಂಎಸ್, ಫೋನ್ ಕರೆ ಅಥವಾ ಇಮೇಲ್‌ನಂತಹ ಮತ್ತೊಂದು ಸಾಧನದೊಂದಿಗೆ ನಿಮ್ಮ ಲಾಗಿನ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿರುವ ಎರಡು ಹಂತದ ಲಾಗಿನ್ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಹೆಚ್ಚು ಸುರಕ್ಷಿತಗೊಳಿಸುತ್ತದೆ. ಬಿಟ್ವಾರ್ಡೆನ್.ಕಾಮ್ ವೆಬ್ ವಾಲ್ಟ್ನಲ್ಲಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "twoStepLogin": { + "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್" + }, + "vaultTimeout": { + "message": "ವಾಲ್ಟ್ ಕಾಲಾವಧಿ" + }, + "vaultTimeoutDesc": { + "message": "ನಿಮ್ಮ ಕಮಾನು ಸಮಯ ಮೀರಲಿ ಮತ್ತು ಆಯ್ದ ಕ್ರಮವನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಆರಿಸಿಕೊಳ್ಳಿ." + }, + "immediately": { + "message": "ತಕ್ಷಣ" + }, + "tenSeconds": { + "message": "೧೦ ಕ್ಷಣ" + }, + "twentySeconds": { + "message": "೨0 ಸೆಕೆಂಡುಗಳು" + }, + "thirtySeconds": { + "message": "೩೦ ಕ್ಷಣ" + }, + "oneMinute": { + "message": "೧ ನಿಮಿಷ" + }, + "twoMinutes": { + "message": "೨ ನಿಮಿಷಗಳು" + }, + "fiveMinutes": { + "message": "೫ ನಿಮಿಷಗಳು" + }, + "fifteenMinutes": { + "message": "೧೫ ನಿಮಿಷಗಳು" + }, + "thirtyMinutes": { + "message": "30 ನಿಮಿಷಗಳು" + }, + "oneHour": { + "message": "೧ ಗಂಟೆ" + }, + "fourHours": { + "message": "೪ ಗಂಟೆಗಳು" + }, + "onIdle": { + "message": "ಸಿಸ್ಟಮ್ ಐಡಲ್‌ನಲ್ಲಿ" + }, + "onSleep": { + "message": "ಸಿಸ್ಟಮ್ ಸ್ಲೀಪ್‌ನಲ್ಲಿ" + }, + "onLocked": { + "message": "ಸಿಸ್ಟಮ್ ಲಾಕ್‌ನಲ್ಲಿ" + }, + "onRestart": { + "message": "ಅಪ್ಲಿಕೇಶನ್ ಮರುಪ್ರಾರಂಭದಲ್ಲಿ" + }, + "never": { + "message": "ಇಲ್ಲವೇ ಇಲ್ಲ" + }, + "security": { + "message": "ಭದ್ರತೆ" + }, + "clearClipboard": { + "message": "ಕ್ಲಿಪ್‌ಬೋರ್ಡ್ ತೆರವುಗೊಳಿಸಿ", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "ನಿಮ್ಮ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ನಿಂದ ನಕಲಿಸಿದ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆರವುಗೊಳಿಸಿ.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "ವೆಬ್‌ಸೈಟ್ ಚಿಹ್ನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, + "disableFaviconDesc": { + "message": "ವೆಬ್‌ಸೈಟ್ ಐಕಾನ್‌ಗಳು ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿರುವ ಪ್ರತಿ ಲಾಗಿನ್ ಐಟಂನ ಪಕ್ಕದಲ್ಲಿ ಗುರುತಿಸಬಹುದಾದ ಚಿತ್ರವನ್ನು ಒದಗಿಸುತ್ತದೆ." + }, + "enableMinToTray": { + "message": "ಟ್ರೇ ಐಕಾನ್‌ಗೆ ಕಡಿಮೆ ಮಾಡಿ" + }, + "enableMinToTrayDesc": { + "message": "ವಿಂಡೋವನ್ನು ಕಡಿಮೆ ಮಾಡುವಾಗ, ಸಿಸ್ಟಮ್ ಟ್ರೇನಲ್ಲಿ ಐಕಾನ್ ಅನ್ನು ತೋರಿಸಿ." + }, + "enableMinToMenuBar": { + "message": "ಮೆನು ಬಾರ್‌ಗೆ ಕಡಿಮೆ ಮಾಡಿ" + }, + "enableMinToMenuBarDesc": { + "message": "ವಿಂಡೋವನ್ನು ಕಡಿಮೆ ಮಾಡುವಾಗ, ಬದಲಿಗೆ ಮೆನು ಬಾರ್‌ನಲ್ಲಿ ಐಕಾನ್ ತೋರಿಸಿ." + }, + "enableCloseToTray": { + "message": "ಟ್ರೇ ಐಕಾನ್ ಹತ್ತಿರ" + }, + "enableCloseToTrayDesc": { + "message": "ವಿಂಡೋವನ್ನು ಮುಚ್ಚುವಾಗ, ಸಿಸ್ಟಮ್ ಟ್ರೇನಲ್ಲಿ ಐಕಾನ್ ಅನ್ನು ತೋರಿಸಿ." + }, + "enableCloseToMenuBar": { + "message": "ಮೆನು ಬಾರ್‌ಗೆ ಹತ್ತಿರದಲ್ಲಿದೆ" + }, + "enableCloseToMenuBarDesc": { + "message": "ವಿಂಡೋವನ್ನು ಮುಚ್ಚುವಾಗ, ಬದಲಿಗೆ ಮೆನು ಬಾರ್‌ನಲ್ಲಿ ಐಕಾನ್ ತೋರಿಸಿ." + }, + "enableTray": { + "message": "ಟ್ರೇ ಐಕಾನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ" + }, + "enableTrayDesc": { + "message": "ಸಿಸ್ಟಮ್ ಟ್ರೇನಲ್ಲಿ ಯಾವಾಗಲೂ ಐಕಾನ್ ತೋರಿಸಿ." + }, + "startToTray": { + "message": "ಐಕಾನ್ ಟ್ರೇ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿ" + }, + "startToTrayDesc": { + "message": "ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮೊದಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಸಿಸ್ಟಮ್ ಟ್ರೇನಲ್ಲಿ ಐಕಾನ್ ಅನ್ನು ಮಾತ್ರ ತೋರಿಸಿ." + }, + "startToMenuBar": { + "message": "ಮೆನು ಬಾರ್‌ಗೆ ಪ್ರಾರಂಭಿಸಿ" + }, + "startToMenuBarDesc": { + "message": "ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮೊದಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಮೆನು ಬಾರ್‌ನಲ್ಲಿ ಐಕಾನ್ ಅನ್ನು ಮಾತ್ರ ತೋರಿಸಿ." + }, + "openAtLogin": { + "message": "ಲಾಗಿನ್‌ನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರಾರಂಭಿಸಿ" + }, + "openAtLoginDesc": { + "message": "ಲಾಗಿನ್‌ನಲ್ಲಿ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರಾರಂಭಿಸಿ." + }, + "alwaysShowDock": { + "message": "ಯಾವಾಗಲೂ ಡಾಕ್‌ನಲ್ಲಿ ತೋರಿಸಿ" + }, + "alwaysShowDockDesc": { + "message": "ಮೆನು ಬಾರ್‌ಗೆ ಕಡಿಮೆಗೊಳಿಸಿದಾಗಲೂ ಡಾಕ್‌ನಲ್ಲಿ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಐಕಾನ್ ತೋರಿಸಿ." + }, + "confirmTrayTitle": { + "message": "ಟ್ರೇ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದನ್ನು ದೃಢೀಕರಿಸಿ" + }, + "confirmTrayDesc": { + "message": "ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ಇತರ ಎಲ್ಲಾ ಟ್ರೇ ಸಂಬಂಧಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸಹ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ." + }, + "language": { + "message": "ಭಾಷೆ" + }, + "languageDesc": { + "message": "ಅಪ್ಲಿಕೇಶನ್ ಬಳಸುವ ಭಾಷೆಯನ್ನು ಬದಲಾಯಿಸಿ. ಮರುಪ್ರಾರಂಭಿಸುವ ಅಗತ್ಯವಿದೆ." + }, + "theme": { + "message": "ಥೀಮ್ಸ್" + }, + "themeDesc": { + "message": "ಅಪ್ಲಿಕೇಶನ್‌ನ ಬಣ್ಣ ಥೀಮ್ ಅನ್ನು ಬದಲಾಯಿಸಿ." + }, + "dark": { + "message": "ಡಾರ್ಕ್", + "description": "Dark color" + }, + "light": { + "message": "ಬೆಳಕು", + "description": "Light color" + }, + "copy": { + "message": "ನಕಲಿಸಿ", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "ನವೀಕರಣೆಗಳಿಗಾಗಿ ಪರೀಕ್ಷಿಸಿ" + }, + "version": { + "message": "ಸಂವಹನ $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "ನವೀಕರಿಸಲು ಮರುಪ್ರಾರಂಭಿಸಿ" + }, + "restartToUpdateDesc": { + "message": "ಆವೃತ್ತಿ $VERSION_NUM$ ಸ್ಥಾಪಿಸಲು ಸಿದ್ಧವಾಗಿದೆ. ಅನುಸ್ಥಾಪನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನೀವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕು. ನೀವು ಈಗ ಮರುಪ್ರಾರಂಭಿಸಲು ಮತ್ತು ನವೀಕರಿಸಲು ಬಯಸುವಿರಾ?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "ನವೀಕರಣ ಲಭ್ಯವಿದೆ" + }, + "updateAvailableDesc": { + "message": "ಒಂದು ಅಪ್ಡೇಟ್ ಕಂಡುಬಂದಿದೆ. ನೀವು ಈಗ ಅದನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ?" + }, + "restart": { + "message": "ಪುನರಾರಂಭ" + }, + "later": { + "message": "ನಂತರ" + }, + "noUpdatesAvailable": { + "message": "ಯಾವುದೇ ನವೀಕರಣಗಳು ಪ್ರಸ್ತುತ ಲಭ್ಯವಿಲ್ಲ. ನೀವು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ." + }, + "updateError": { + "message": "ದೋಷವನ್ನು ನವೀಕರಿಸಿ" + }, + "unknown": { + "message": "ಅಪರಿಚಿತ" + }, + "copyUsername": { + "message": "ಬಳಕೆಹೆಸರು ನಕಲಿಸು" + }, + "copyNumber": { + "message": "ನಕಲು ಸಂಖ್ಯೆ", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "ಭದ್ರತಾ ಕೋಡ್ ಅನ್ನು ನಕಲಿಸಿ", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವ" + }, + "premiumManage": { + "message": "ಸದಸ್ಯತ್ವವನ್ನು ನಿರ್ವಹಿಸಿ" + }, + "premiumManageAlert": { + "message": "ನಿಮ್ಮ ಸದಸ್ಯತ್ವವನ್ನು ನೀವು bitwarden.com ವೆಬ್ ವಾಲ್ಟ್‌ನಲ್ಲಿ ನಿರ್ವಹಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "premiumRefresh": { + "message": "ಸದಸ್ಯತ್ವವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ" + }, + "premiumNotCurrentMember": { + "message": "ನೀವು ಪ್ರಸ್ತುತ ಪ್ರೀಮಿಯಂ ಸದಸ್ಯರಲ್ಲ." + }, + "premiumSignUpAndGet": { + "message": "ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವಕ್ಕಾಗಿ ಸೈನ್ ಅಪ್ ಮಾಡಿ ಮತ್ತು ಪಡೆಯಿರಿ:" + }, + "premiumSignUpStorage": { + "message": "ಫೈಲ್ ಲಗತ್ತುಗಳಿಗಾಗಿ 1 ಜಿಬಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಸಂಗ್ರಹ." + }, + "premiumSignUpTwoStep": { + "message": "ಹೆಚ್ಚುವರಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಆಯ್ಕೆಗಳಾದ ಯೂಬಿಕೆ, ಎಫ್‌ಐಡಿಒ ಯು 2 ಎಫ್, ಮತ್ತು ಡ್ಯುವೋ." + }, + "premiumSignUpReports": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ಪಾಸ್ವರ್ಡ್ ನೈರ್ಮಲ್ಯ, ಖಾತೆ ಆರೋಗ್ಯ ಮತ್ತು ಡೇಟಾ ಉಲ್ಲಂಘನೆ ವರದಿಗಳು." + }, + "premiumSignUpTotp": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್‌ನಲ್ಲಿನ ಲಾಗಿನ್‌ಗಳಿಗಾಗಿ TOTP ಪರಿಶೀಲನಾ ಕೋಡ್ (2FA) ಜನರೇಟರ್." + }, + "premiumSignUpSupport": { + "message": "ಆದ್ಯತೆಯ ಗ್ರಾಹಕ ಬೆಂಬಲ." + }, + "premiumSignUpFuture": { + "message": "ಎಲ್ಲಾ ಭವಿಷ್ಯದ ಪ್ರೀಮಿಯಂ ವೈಶಿಷ್ಟ್ಯಗಳು. ಹೆಚ್ಚು ಶೀಘ್ರದಲ್ಲೇ ಬರಲಿದೆ!" + }, + "premiumPurchase": { + "message": "ಪ್ರೀಮಿಯಂ ಖರೀದಿಸಿ" + }, + "premiumPurchaseAlert": { + "message": "ನೀವು ಬಿಟ್ವಾರ್ಡೆನ್.ಕಾಮ್ ವೆಬ್ ವಾಲ್ಟ್ನಲ್ಲಿ ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವವನ್ನು ಖರೀದಿಸಬಹುದು. ನೀವು ಈಗ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "premiumCurrentMember": { + "message": "ನೀವು ಪ್ರೀಮಿಯಂ ಸದಸ್ಯರಾಗಿದ್ದೀರಿ!" + }, + "premiumCurrentMemberThanks": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್ ಅವರನ್ನು ಬೆಂಬಲಿಸಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು." + }, + "premiumPrice": { + "message": "ಎಲ್ಲವೂ ಕೇವಲ $PRICE$ / ವರ್ಷಕ್ಕೆ!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "ರಿಫ್ರೆಶ್ ಪೂರ್ಣಗೊಂಡಿದೆ" + }, + "passwordHistory": { + "message": "ಪಾಸ್ವರ್ಡ್ ಇತಿಹಾಸ" + }, + "clear": { + "message": "ಕ್ಲಿಯರ್‌", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಪಾಸ್ವರ್ಡ್ಗಳು ಇಲ್ಲ." + }, + "undo": { + "message": "ರದ್ದುಮಾಡು" + }, + "redo": { + "message": "ಮತ್ತೆಮಾಡು" + }, + "cut": { + "message": "ಕತ್ತರಿಸು", + "description": "Cut to clipboard" + }, + "paste": { + "message": "ಅಂಟಿಸಿ", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "ಎಲ್ಲವನ್ನು ಆರಿಸು" + }, + "zoomIn": { + "message": "ಗಾತ್ರ ಹಿಗ್ಗಿಸಿ" + }, + "zoomOut": { + "message": "ಗಾತ್ರ ಕುಗ್ಗಿಸಿ" + }, + "resetZoom": { + "message": "ಜೂಮ್ ಮರುಹೊಂದಿಸಿ" + }, + "toggleFullScreen": { + "message": "ಟಾಗಲ್ ಫುಲ್ ಸ್ಕ್ರೀನ್" + }, + "reload": { + "message": "ಮರುತುಂಬಿಸು" + }, + "toggleDevTools": { + "message": "ಡೆವೆಲಪರ್ ಟೂಲ್ಸ್ನ ಸ್ವಿಚ್ ಮಾಡಿ" + }, + "minimize": { + "message": "ಕನಿಷ್ಟ ಮಾಡಿ", + "description": "Minimize window" + }, + "zoom": { + "message": "ಝೂಮ್" + }, + "bringAllToFront": { + "message": "ಎಲ್ಲಾವನ್ನು ಮುಂದೆ ತನ್ನಿ", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "ಬಿಟ್ವಾರ್ಡನ್ ಬಗ್ಗೆ" + }, + "services": { + "message": "ಸೇವೆಗಳು" + }, + "hideBitwarden": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್ ಅನ್ನು ಮರೆಮಾಡಿ" + }, + "hideOthers": { + "message": "ಬೇರೆಲ್ಲವನ್ನೂ ಮರೆಮಾಚು" + }, + "showAll": { + "message": "ಎಲ್ಲಾ ತೋರಿಸಿ" + }, + "quitBitwarden": { + "message": "ಬಿಟ್ವಾರ್ಡೆನ್ ಬಿಟ್ಟುಬಿಡಿ" + }, + "valueCopied": { + "message": "$VALUE$ ನಕಲಿಸಲಾಗಿದೆ", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "ಸಹಾಯ" + }, + "window": { + "message": "ಕಿಟಕಿ" + }, + "checkPassword": { + "message": "ಪಾಸ್ವರ್ಡ್ ಬಹಿರಂಗಗೊಂಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ." + }, + "passwordExposed": { + "message": "ಈ ಗುಪ್ತಪದವು ಡೇಟಾ ಉಲ್ಲಂಘನೆಯಲ್ಲಿ $VALUE$ ಮೌಲ್ಯವನ್ನು (ಗಳು) ಬಹಿರಂಗಪಡಿಸಲಾಗಿದೆ. ನೀವು ಅದನ್ನು ಬದಲಾಯಿಸಬೇಕು.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "ತಿಳಿದಿರುವ ಯಾವುದೇ ಡೇಟಾ ಉಲ್ಲಂಘನೆಗಳಲ್ಲಿ ಈ ಪಾಸ್‌ವರ್ಡ್ ಕಂಡುಬಂದಿಲ್ಲ. ಅದನ್ನು ಬಳಸಲು ಸುರಕ್ಷಿತವಾಗಿರಬೇಕು." + }, + "baseDomain": { + "message": "ಮೂಲ ಡೊಮೇನ್", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "ಅತಿಥೆಯ", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "ನಿಖರವಾಗಿ" + }, + "startsWith": { + "message": "ಇದರೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ" + }, + "regEx": { + "message": "ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿ", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "ಹೊಂದಾಣಿಕೆ ಪತ್ತೆ", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "ಡೀಫಾಲ್ಟ್ ಪಂದ್ಯ ಪತ್ತೆ", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "ಟಾಗಲ್ ಆಯ್ಕೆಗಳು" + }, + "organization": { + "message": "ಸಂಸ್ಥೆ", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "ಡಿಫಾಲ್ಟ್" + }, + "exit": { + "message": "ನಿರ್ಗಮಿಸು" + }, + "showHide": { + "message": "ತೋರಿಸು / ಮರೆಮಾಡಿ", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "ಟ್ರೇಗೆ ಮರೆಮಾಡಿ" + }, + "alwaysOnTop": { + "message": "ಯಾವಾಗಲೂ ಮೇಲೆ", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "ಅಪ್‌ಡೇಟ್", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "ರಫ್ತು ವಾಲ್ಟ್" + }, + "fileFormat": { + "message": "ಕಡತದ ಮಾದರಿ" + }, + "warning": { + "message": "ಎಚ್ಚರಿಕೆ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "ವಾಲ್ಟ್ ರಫ್ತು ಖಚಿತಪಡಿಸಿ" + }, + "exportWarningDesc": { + "message": "ಈ ರಫ್ತು ನಿಮ್ಮ ವಾಲ್ಟ್ ಡೇಟಾವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡದ ಸ್ವರೂಪದಲ್ಲಿ ಒಳಗೊಂಡಿದೆ. ನೀವು ರಫ್ತು ಮಾಡಿದ ಫೈಲ್ ಅನ್ನು ಅಸುರಕ್ಷಿತ ಚಾನಲ್‌ಗಳಲ್ಲಿ (ಇಮೇಲ್ ನಂತಹ) ಸಂಗ್ರಹಿಸಬಾರದು ಅಥವಾ ಕಳುಹಿಸಬಾರದು. ನೀವು ಅದನ್ನು ಬಳಸಿದ ನಂತರ ಅದನ್ನು ಅಳಿಸಿ." + }, + "encExportKeyWarningDesc": { + "message": "ಈ ರಫ್ತು ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ ಖಾತೆಯ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನೀವು ಎಂದಾದರೂ ತಿರುಗಿಸಿದರೆ ನೀವು ಈ ರಫ್ತು ಫೈಲ್ ಅನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ ನೀವು ಮತ್ತೆ ರಫ್ತು ಮಾಡಬೇಕು." + }, + "encExportAccountWarningDesc": { + "message": "ಖಾತೆ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಗಳು ಪ್ರತಿ ಬಿಟ್‌ವಾರ್ಡೆನ್ ಬಳಕೆದಾರ ಖಾತೆಗೆ ಅನನ್ಯವಾಗಿವೆ, ಆದ್ದರಿಂದ ನೀವು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರಫ್ತು ಬೇರೆ ಖಾತೆಗೆ ಆಮದು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ." + }, + "noOrganizationsList": { + "message": "ನೀವು ಯಾವುದೇ ಸಂಸ್ಥೆಗಳಿಗೆ ಸೇರಿಲ್ಲ. ಇತರ ಬಳಕೆದಾರರೊಂದಿಗೆ ವಸ್ತುಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಲು ಸಂಘಟನೆಗಳು ನಿಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ." + }, + "noCollectionsInList": { + "message": "ಪಟ್ಟಿ ಮಾಡಲು ಯಾವುದೇ ಸಂಗ್ರಹಗಳಿಲ್ಲ." + }, + "ownership": { + "message": "ಮಾಲೀಕತ್ವ" + }, + "whoOwnsThisItem": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಯಾರು ಹೊಂದಿದ್ದಾರೆ?" + }, + "strong": { + "message": "ಬಲಶಾಲಿ", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "ಒಳ್ಳೆಯ", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "ದುರ್ಬಲ", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "ದುರ್ಬಲ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್" + }, + "weakMasterPasswordDesc": { + "message": "ನೀವು ಆಯ್ಕೆ ಮಾಡಿದ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ದುರ್ಬಲವಾಗಿದೆ. ನಿಮ್ಮ ಬಿಟ್ವರ್ಡ್ ಖಾತೆಯನ್ನು ಸರಿಯಾಗಿ ರಕ್ಷಿಸಲು ನೀವು ಬಲವಾದ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ (ಅಥವಾ ಪಾಸ್ಫ್ರೇಸ್) ಅನ್ನು ಬಳಸಬೇಕು. ಈ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನೀವು ಬಳಸಲು ಬಯಸುತ್ತೀರಾ?" + }, + "pin": { + "message": "ಪಿನ್", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "ಪಿನ್‌ನೊಂದಿಗೆ ಅನ್ಲಾಕ್ ಮಾಡಿ" + }, + "setYourPinCode": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್ ಅನ್ಲಾಕ್ ಮಾಡಲು ನಿಮ್ಮ ಪಿನ್ ಕೋಡ್ ಅನ್ನು ಹೊಂದಿಸಿ. ನೀವು ಎಂದಾದರೂ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಲಾಗ್ ಔಟ್ ಆಗಿದ್ದರೆ ನಿಮ್ಮ ಪಿನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ." + }, + "pinRequired": { + "message": "ಪಿನ್ ಕೋಡ್ ಅಗತ್ಯವಿದೆ." + }, + "invalidPin": { + "message": "ಅಮಾನ್ಯ ಪಿನ್ ಕೋಡ್." + }, + "unlockWithWindowsHello": { + "message": "ವಿಂಡೋಸ್ ಹಲೋನೊಂದಿಗೆ ಅನ್ಲಾಕ್ ಮಾಡಿ" + }, + "windowsHelloConsentMessage": { + "message": "ಬಿಟ್‌ವಾರ್ಡೆನ್‌ಗಾಗಿ ಪರಿಶೀಲಿಸಿ." + }, + "unlockWithTouchId": { + "message": "ಟಚ್ ಐಡಿ ಯೊಂದಿಗೆ ಅನ್ಲಾಕ್ ಮಾಡಿ" + }, + "touchIdConsentMessage": { + "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ" + }, + "noAutoPromptWindowsHello": { + "message": "ಪ್ರಾರಂಭದಲ್ಲಿ ವಿಂಡೋಸ್ ಹಲೋಗಾಗಿ ಕೇಳಬೇಡಿ." + }, + "noAutoPromptTouchId": { + "message": "ಪ್ರಾರಂಭದಲ್ಲಿ ಟಚ್ ಐಡಿಗಾಗಿ ಕೇಳಬೇಡಿ." + }, + "lockWithMasterPassOnRestart": { + "message": "ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್‌ನೊಂದಿಗೆ ಲಾಕ್ ಮಾಡಿ" + }, + "preferences": { + "message": "ಆದ್ಯತೆಗಳು" + }, + "enableMenuBar": { + "message": "ಮೆನು ಬಾರ್ ಐಕಾನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ" + }, + "enableMenuBarDesc": { + "message": "ಮೆನು ಬಾರ್‌ನಲ್ಲಿ ಯಾವಾಗಲೂ ಐಕಾನ್ ತೋರಿಸಿ." + }, + "hideToMenuBar": { + "message": "ಮೆನು ಬಾರ್‌ಗೆ ಮರೆಮಾಡಿ" + }, + "selectOneCollection": { + "message": "ನೀವು ಕನಿಷ್ಠ ಒಂದು ಸಂಗ್ರಹವನ್ನು ಆರಿಸಬೇಕು." + }, + "premiumUpdated": { + "message": "ನೀವು ಪ್ರೀಮಿಯಂಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿದ್ದೀರಿ." + }, + "restore": { + "message": "ಪುನಸ್ಥಾಪಿಸಿ" + }, + "premiumManageAlertAppStore": { + "message": "ಆಪ್ ಸ್ಟೋರ್‌ನಿಂದ ನಿಮ್ಮ ಚಂದಾದಾರಿಕೆಯನ್ನು ನೀವು ನಿರ್ವಹಿಸಬಹುದು. ನೀವು ಈಗ ಆಪ್ ಸ್ಟೋರ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ಬಯಸುವಿರಾ?" + }, + "legal": { + "message": "ಕಾನೂನು", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "ಸೇವಾ ನಿಯಮಗಳು" + }, + "privacyPolicy": { + "message": "ಗೌಪ್ಯತಾ ನೀತಿ" + }, + "unsavedChangesConfirmation": { + "message": "ನೀವು ಬಿಡಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ನೀವು ಈಗ ಹೊರಟು ಹೋದರೆ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಮಾಹಿತಿಯನ್ನು ಉಳಿಸಲಾಗುವುದಿಲ್ಲ." + }, + "unsavedChangesTitle": { + "message": "ಉಳಿಸದ ಬದಲಾವಣೆಗಳು" + }, + "clone": { + "message": "ಕ್ಲೋನ್" + }, + "passwordGeneratorPolicyInEffect": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆ ನೀತಿಗಳು ನಿಮ್ಮ ಜನರೇಟರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ." + }, + "vaultTimeoutAction": { + "message": "ವಾಲ್ಟ್ ಸಮಯ ಮೀರುವ ಕ್ರಿಯೆ" + }, + "vaultTimeoutActionLockDesc": { + "message": "ಲಾಕ್ ಮಾಡಿದ ವಾಲ್ಟ್‌ಗೆ ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮತ್ತೆ ಪ್ರವೇಶಿಸಲು ನೀವು ಅದನ್ನು ಮರು ನಮೂದಿಸುವ ಅಗತ್ಯವಿದೆ." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "ಲಾಗ್ out ಟ್ ವಾಲ್ಟ್‌ಗೆ ನೀವು ಅದನ್ನು ಮತ್ತೆ ಪ್ರವೇಶಿಸಲು ಮರು ದೃಢೀಕರಿಸುವ ಅಗತ್ಯವಿದೆ." + }, + "lock": { + "message": "ಲಾಕ್‌", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "ಅನುಪಯುಕ್ತ", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "ಅನುಪಯುಕ್ತವನ್ನು ಹುಡುಕಿ" + }, + "permanentlyDeleteItem": { + "message": "ಐಟಂ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಿ" + }, + "permanentlyDeleteItemConfirmation": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "permanentlyDeletedItem": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾದ ಐಟಂ" + }, + "restoreItem": { + "message": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿ" + }, + "restoreItemConfirmation": { + "message": "ಈ ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "restoredItem": { + "message": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗಿದೆ" + }, + "permanentlyDelete": { + "message": "ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಿ" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ಲಾಗ್ out ಟ್ ಆಗುವುದರಿಂದ ನಿಮ್ಮ ವಾಲ್ಟ್‌ನ ಎಲ್ಲಾ ಪ್ರವೇಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ಕಾಲಾವಧಿ ಅವಧಿಯ ನಂತರ ಆನ್‌ಲೈನ್ ದೃ hentic ೀಕರಣದ ಅಗತ್ಯವಿದೆ. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬಳಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "ಕಾಲಾವಧಿ ಕ್ರಿಯೆಯ ದೃಢೀಕರಣ" + }, + "enterpriseSingleSignOn": { + "message": "ಎಂಟರ್‌ಪ್ರೈಸ್ ಏಕ ಸೈನ್-ಆನ್" + }, + "setMasterPassword": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಹೊಂದಿಸಿ" + }, + "ssoCompleteRegistration": { + "message": "ಎಸ್‌ಎಸ್‌ಒನೊಂದಿಗೆ ಲಾಗಿನ್ ಆಗುವುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಮತ್ತು ರಕ್ಷಿಸಲು ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಹೊಂದಿಸಿ." + }, + "newMasterPass": { + "message": "ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್" + }, + "confirmNewMasterPass": { + "message": "ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ದೃಢೀಕರಣ" + }, + "masterPasswordPolicyInEffect": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆ ನೀತಿಗಳಿಗೆ ಈ ಕೆಳಗಿನ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅಗತ್ಯವಿದೆ:" + }, + "policyInEffectMinComplexity": { + "message": "$SCORE$ ನ ಕನಿಷ್ಠ ಸಂಕೀರ್ಣತೆಯ ಸ್ಕೋರ್", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "$LENGTH$ನ ಕನಿಷ್ಠ ಉದ್ದ", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ದೊಡ್ಡಕ್ಷರಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ" + }, + "policyInEffectLowercase": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಣ್ಣ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ" + }, + "policyInEffectNumbers": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ" + }, + "policyInEffectSpecial": { + "message": "ಕೆಳಗಿನ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "ನಿಮ್ಮ ಹೊಸ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ನೀತಿಯ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸುವುದಿಲ್ಲ." + }, + "acceptPolicies": { + "message": "ಈ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ನೀವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಪ್ಪುತ್ತೀರಿ:" + }, + "acceptPoliciesError": { + "message": "ಸೇವಾ ನಿಯಮಗಳು ಮತ್ತು ಗೌಪ್ಯತೆ ನೀತಿಯನ್ನು ಅಂಗೀಕರಿಸಲಾಗಿಲ್ಲ." + }, + "enableBrowserIntegration": { + "message": "ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ" + }, + "enableBrowserIntegrationDesc": { + "message": "ಬ್ರೌಸರ್ನಲ್ಲಿ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ಗಾಗಿ ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ." + }, + "browserIntegrationMasOnlyTitle": { + "message": "ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ" + }, + "browserIntegrationMasOnlyDesc": { + "message": "ದುರದೃಷ್ಟವಶಾತ್ ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಇದೀಗ ಮ್ಯಾಕ್ ಆಪ್ ಸ್ಟೋರ್ ಆವೃತ್ತಿಯಲ್ಲಿ ಮಾತ್ರ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "ದುರದೃಷ್ಟವಶಾತ್ ವಿಂಡೋಸ್ ಸ್ಟೋರ್ ಆವೃತ್ತಿಯಲ್ಲಿ ಬ್ರೌಸರ್ ಏಕೀಕರಣವನ್ನು ಪ್ರಸ್ತುತ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ." + }, + "enableBrowserIntegrationFingerprint": { + "message": "ಬ್ರೌಸರ್ ಏಕೀಕರಣಕ್ಕಾಗಿ ಪರಿಶೀಲನೆ ಅಗತ್ಯವಿದೆ" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "ನಿಮ್ಮ ಡೆಸ್ಕ್‌ಟಾಪ್ ಮತ್ತು ಬ್ರೌಸರ್ ನಡುವೆ ಲಿಂಕ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವಾಗ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಪದಗುಚ್ ಕಾಯಂಗೊಳಿಸುವಿಕೆ ಅಗತ್ಯವಿರುವ ಮೂಲಕ ಹೆಚ್ಚುವರಿ ಭದ್ರತೆಯ ಪದರವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಪ್ರತಿ ಬಾರಿ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದಾಗ ಬಳಕೆದಾರರ ಹಸ್ತಕ್ಷೇಪ ಮತ್ತು ಪರಿಶೀಲನೆ ಅಗತ್ಯವಾಗಿರುತ್ತದೆ." + }, + "approve": { + "message": "ಅನುಮೋದಿಸಿದೆ" + }, + "verifyBrowserTitle": { + "message": "ಬ್ರೌಸರ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ" + }, + "verifyBrowserDesc": { + "message": "ತೋರಿಸಿದ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಯಲ್ಲಿ ತೋರಿಸಿರುವ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗೆ ಹೋಲುತ್ತದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ." + }, + "biometricsNotEnabledTitle": { + "message": "ಬಯೊಮಿಟ್ರಿಕ್ಸ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ" + }, + "biometricsNotEnabledDesc": { + "message": "ಬ್ರೌಸರ್ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಮೊದಲು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಡೆಸ್ಕ್ಟಾಪ್ ಬಯೋಮೆಟ್ರಿಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ನಂತೆಯೇ ಇರಬಾರದು." + }, + "personalOwnershipPolicyInEffect": { + "message": "ಸಂಸ್ಥೆಯ ನೀತಿಯು ನಿಮ್ಮ ಮಾಲೀಕತ್ವದ ಆಯ್ಕೆಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತಿದೆ." + }, + "allSends": { + "message": "ಎಲ್ಲಾ ಕಳುಹಿಸುತ್ತದೆ", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "ಫೈಲ್" + }, + "sendTypeText": { + "message": "ಪಠ್ಯ" + }, + "searchSends": { + "message": "ಹುಡುಕಾಟ ಕಳುಹಿಸುತ್ತದೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "ಕಳುಹಿಸು ಸಂಪಾದಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "ನನ್ನ ವಾಲ್ಟ್" + }, + "text": { + "message": "ಪಠ್ಯ" + }, + "deletionDate": { + "message": "ಅಳಿಸುವ ದಿನಾಂಕ" + }, + "deletionDateDesc": { + "message": "ಕಳುಹಿಸಿದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯದ ಮೇಲೆ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "ಮುಕ್ತಾಯ ದಿನಾಂಕ" + }, + "expirationDateDesc": { + "message": "ಹೊಂದಿಸಿದ್ದರೆ, ಈ ಕಳುಹಿಸುವಿಕೆಯ ಪ್ರವೇಶವು ನಿಗದಿತ ದಿನಾಂಕ ಮತ್ತು ಸಮಯದ ಮೇಲೆ ಮುಕ್ತಾಯಗೊಳ್ಳುತ್ತದೆ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "ಗರಿಷ್ಠ ಪ್ರವೇಶ ಎಣಿಕೆ" + }, + "maxAccessCountDesc": { + "message": "ಹೊಂದಿಸಿದ್ದರೆ, ಗರಿಷ್ಠ ಪ್ರವೇಶ ಎಣಿಕೆ ತಲುಪಿದ ನಂತರ ಬಳಕೆದಾರರಿಗೆ ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "ಪ್ರಸ್ತುತ ಪ್ರವೇಶ ಎಣಿಕೆ" + }, + "disableSend": { + "message": "ಇದನ್ನು ಕಳುಹಿಸುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ಇದರಿಂದ ಯಾರೂ ಅದನ್ನು ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಬಳಕೆದಾರರಿಗೆ ಪಾಸ್‌ವರ್ಡ್ ಐಚ್ ಗತ್ಯವಿದೆ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "ಈ ಕಳುಹಿಸುವ ಬಗ್ಗೆ ಖಾಸಗಿ ಟಿಪ್ಪಣಿಗಳು.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸುವಾಗ, ಪಠ್ಯವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಮರೆಮಾಡಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "ಕಳುಹಿಸು ರಚಿಸಲಾಗಿದೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "ಕಳುಹಿಸಿದ ಸಂಪಾದನೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "ಅಳಿಸಿದ ಕಳುಹಿಸಲಾಗಿದೆ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "ಹೊಸ ಪಾಸ್‌ವರ್ಡ್" + }, + "whatTypeOfSend": { + "message": "ಇದು ಯಾವ ರೀತಿಯ ಕಳುಹಿಸುತ್ತದೆ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "ಕಳುಹಿಸು ರಚಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "ನೀವು ಕಳುಹಿಸಲು ಬಯಸುವ ಪಠ್ಯ." + }, + "sendFileDesc": { + "message": "ನೀವು ಕಳುಹಿಸಲು ಬಯಸುವ ಫೈಲ್." + }, + "days": { + "message": "$DAYS$ ದಿನಗಳು", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 ದಿನ" + }, + "custom": { + "message": "ಕಸ್ಟಮ್" + }, + "deleteSendConfirmation": { + "message": "ಈ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "ನಕಲಿಸಿ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "ಇದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಲಿಂಕ್ ಅನ್ನು ನಕಲಿಸಿ ಉಳಿಸಿದ ನಂತರ ನನ್ನ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ಕಳುಹಿಸಿ." + }, + "sendDisabled": { + "message": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಕಳುಹಿಸಿ", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "ಲಿಂಕ್ ಕಾಪಿ ಮಾಡಿ" + }, + "disabled": { + "message": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" + }, + "maxAccessCountReached": { + "message": "ಗರಿಷ್ಠ ಪ್ರವೇಶ ಎಣಿಕೆ ತಲುಪಿದೆ" + }, + "expired": { + "message": "ಅವಧಿ ಮೀರಿದೆ" + }, + "pendingDeletion": { + "message": "ಅಳಿಸುವಿಕೆ ಬಾಕಿ ಉಳಿದಿದೆ" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn ಅನ್ನು ಪ್ರಮಾಣಿಕರಿಸು" + }, + "hideEmail": { + "message": "ಸ್ವೀಕರಿಸುವವರಿಂದ ನನ್ನ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಮರೆಮಾಡಿ." + }, + "sendOptionsPolicyInEffect": { + "message": "ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಸ್ಥೆಯ ನೀತಿಗಳು ನಿಮ್ಮ ಕಳುಹಿಸುವ ಆಯ್ಕೆಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ." + }, + "emailVerificationRequired": { + "message": "ಇಮೇಲ್ ಪರಿಶೀಲನೆ ಅಗತ್ಯವಿದೆ" + }, + "emailVerificationRequiredDesc": { + "message": "ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬೇಕು." + }, + "passwordPrompt": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಮರು-ಪ್ರಾಂಪ್ಟ್" + }, + "passwordConfirmation": { + "message": "ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಣ" + }, + "passwordConfirmationDesc": { + "message": "ಮುಂದುವರಿಯಲು ಈ ಕ್ರಿಯೆಯನ್ನು ರಕ್ಷಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಗುರುತನ್ನು ಪರಿಶೀಲಿಸಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರು ನಮೂದಿಸಿ." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json new file mode 100644 index 0000000000..dddd5abab2 --- /dev/null +++ b/apps/desktop/src/locales/ko/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "필터" + }, + "allItems": { + "message": "모든 항목" + }, + "favorites": { + "message": "즐겨찾기" + }, + "types": { + "message": "유형" + }, + "typeLogin": { + "message": "로그인" + }, + "typeCard": { + "message": "카드" + }, + "typeIdentity": { + "message": "신원" + }, + "typeSecureNote": { + "message": "보안 메모" + }, + "folders": { + "message": "폴더" + }, + "collections": { + "message": "컬렉션" + }, + "searchVault": { + "message": "보관함 검색" + }, + "addItem": { + "message": "항목 추가" + }, + "shared": { + "message": "공유됨" + }, + "share": { + "message": "공유" + }, + "moveToOrganization": { + "message": "조직으로 이동하기" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$이(가) $ORGNAME$(으)로 이동됨", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "이 항목을 이동할 조직을 선택하십시오. 항목이 조직으로 이동되면 소유권이 조직으로 이전됩니다. 일단 이동되면, 더는 이동된 항목의 직접적인 소유자가 아니게 됩니다." + }, + "attachments": { + "message": "첨부 파일" + }, + "viewItem": { + "message": "항목 보기" + }, + "name": { + "message": "이름" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "새 URI" + }, + "username": { + "message": "사용자 이름" + }, + "password": { + "message": "비밀번호" + }, + "passphrase": { + "message": "패스프레이즈" + }, + "editItem": { + "message": "항목 편집" + }, + "emailAddress": { + "message": "이메일 주소" + }, + "verificationCodeTotp": { + "message": "인증 코드 (TOTP)" + }, + "website": { + "message": "웹 사이트" + }, + "notes": { + "message": "메모" + }, + "customFields": { + "message": "사용자 지정 필드" + }, + "launch": { + "message": "열기" + }, + "copyValue": { + "message": "값 복사", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "클립보드로 복사할 때 최소화" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "항목의 데이터를 클립보드로 복사할 때 최소화합니다." + }, + "toggleVisibility": { + "message": "표시 전환" + }, + "toggleCollapse": { + "message": "감추기 전환", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "카드 소유자 이름" + }, + "number": { + "message": "번호" + }, + "brand": { + "message": "브랜드" + }, + "expiration": { + "message": "만료" + }, + "securityCode": { + "message": "보안 코드" + }, + "identityName": { + "message": "ID 이름" + }, + "company": { + "message": "회사" + }, + "ssn": { + "message": "주민등록번호" + }, + "passportNumber": { + "message": "여권 번호" + }, + "licenseNumber": { + "message": "면허 번호" + }, + "email": { + "message": "이메일" + }, + "phone": { + "message": "전화번호" + }, + "address": { + "message": "주소" + }, + "premiumRequired": { + "message": "프리미엄 멤버십 필요" + }, + "premiumRequiredDesc": { + "message": "이 기능을 사용하려면 프리미엄 멤버십이 필요합니다." + }, + "errorOccurred": { + "message": "오류가 발생했습니다." + }, + "error": { + "message": "오류" + }, + "january": { + "message": "1월" + }, + "february": { + "message": "2월" + }, + "march": { + "message": "3월" + }, + "april": { + "message": "4월" + }, + "may": { + "message": "5월" + }, + "june": { + "message": "6월" + }, + "july": { + "message": "7월" + }, + "august": { + "message": "8월" + }, + "september": { + "message": "9월" + }, + "october": { + "message": "10월" + }, + "november": { + "message": "11월" + }, + "december": { + "message": "12월" + }, + "ex": { + "message": "예)", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "제목" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "만료 월" + }, + "expirationYear": { + "message": "만료 연도" + }, + "select": { + "message": "선택" + }, + "other": { + "message": "기타" + }, + "generatePassword": { + "message": "비밀번호 생성" + }, + "type": { + "message": "유형" + }, + "firstName": { + "message": "이름" + }, + "middleName": { + "message": "가운데 이름" + }, + "lastName": { + "message": "성" + }, + "fullName": { + "message": "전체 이름" + }, + "address1": { + "message": "주소 1" + }, + "address2": { + "message": "주소 2" + }, + "address3": { + "message": "주소 3" + }, + "cityTown": { + "message": "읍 / 면 / 동" + }, + "stateProvince": { + "message": "시 / 도" + }, + "zipPostalCode": { + "message": "우편번호" + }, + "country": { + "message": "국가" + }, + "save": { + "message": "저장" + }, + "cancel": { + "message": "취소" + }, + "delete": { + "message": "삭제" + }, + "favorite": { + "message": "즐겨찾기" + }, + "edit": { + "message": "편집" + }, + "authenticatorKeyTotp": { + "message": "인증 키 (TOTP)" + }, + "folder": { + "message": "폴더" + }, + "newCustomField": { + "message": "새 사용자 지정 필드" + }, + "value": { + "message": "값" + }, + "dragToSort": { + "message": "드래그하여 정렬" + }, + "cfTypeText": { + "message": "텍스트" + }, + "cfTypeHidden": { + "message": "숨김" + }, + "cfTypeBoolean": { + "message": "참 / 거짓" + }, + "cfTypeLinked": { + "message": "연결됨", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "연결된 값", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "제거" + }, + "nameRequired": { + "message": "이름은 반드시 입력해야 합니다." + }, + "addedItem": { + "message": "항목 추가함" + }, + "editedItem": { + "message": "항목 편집함" + }, + "deleteItem": { + "message": "항목 삭제" + }, + "deleteFolder": { + "message": "폴더 삭제" + }, + "deleteAttachment": { + "message": "첨부 파일 삭제" + }, + "deleteItemConfirmation": { + "message": "정말로 휴지통으로 이동시킬까요?" + }, + "deletedItem": { + "message": "삭제한 항목" + }, + "overwritePasswordConfirmation": { + "message": "정말 현재 비밀번호를 덮어쓰시겠습니까?" + }, + "overwriteUsername": { + "message": "아이디 덮어쓰기" + }, + "overwriteUsernameConfirmation": { + "message": "정말 현재 아이디를 덮어쓰시겠습니까?" + }, + "noneFolder": { + "message": "폴더 없음", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "폴더 추가" + }, + "editFolder": { + "message": "폴더 편집" + }, + "regeneratePassword": { + "message": "비밀번호 재생성" + }, + "copyPassword": { + "message": "비밀번호 복사" + }, + "copyUri": { + "message": "URI 복사" + }, + "copyVerificationCodeTotp": { + "message": "인증 코드 (TOTP) 복사" + }, + "length": { + "message": "길이" + }, + "numWords": { + "message": "단어 수" + }, + "wordSeparator": { + "message": "구분 기호" + }, + "capitalize": { + "message": "첫 글자를 대문자로", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "숫자 포함" + }, + "close": { + "message": "닫기" + }, + "minNumbers": { + "message": "숫자 최소 개수" + }, + "minSpecial": { + "message": "특수 문자 최소 개수", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "모호한 문자 사용 안 함" + }, + "searchCollection": { + "message": "컬렉션 검색" + }, + "searchFolder": { + "message": "폴더 검색" + }, + "searchFavorites": { + "message": "즐겨찾기 검색" + }, + "searchType": { + "message": "유형 검색", + "description": "Search item type" + }, + "newAttachment": { + "message": "새 첨부 파일 추가" + }, + "deletedAttachment": { + "message": "첨부 파일 삭제함" + }, + "deleteAttachmentConfirmation": { + "message": "정말 이 첨부 파일을 삭제하시겠습니까?" + }, + "attachmentSaved": { + "message": "첨부 파일을 저장했습니다." + }, + "file": { + "message": "파일" + }, + "selectFile": { + "message": "파일을 선택하세요." + }, + "maxFileSize": { + "message": "최대 파일 크기는 500MB입니다." + }, + "updateKey": { + "message": "이 기능을 사용하려면 암호화 키를 업데이트해야 합니다." + }, + "editedFolder": { + "message": "폴더 편집함" + }, + "addedFolder": { + "message": "폴더 추가함" + }, + "deleteFolderConfirmation": { + "message": "정말 이 폴더를 삭제하시겠습니까?" + }, + "deletedFolder": { + "message": "폴더 삭제함" + }, + "loginOrCreateNewAccount": { + "message": "안전 보관함에 접근하려면 로그인하거나 새 계정을 만드세요." + }, + "createAccount": { + "message": "계정 만들기" + }, + "logIn": { + "message": "로그인" + }, + "submit": { + "message": "보내기" + }, + "masterPass": { + "message": "마스터 비밀번호" + }, + "masterPassDesc": { + "message": "마스터 비밀번호는 보관함을 열 때 필요한 비밀번호입니다. 절대 마스터 비밀번호를 잊어버리지 마세요. 잊어버리면 복구할 수 있는 방법이 없습니다." + }, + "masterPassHintDesc": { + "message": "마스터 비밀번호 힌트는 마스터 비밀번호를 잊었을 때 도움이 될 수 있습니다." + }, + "reTypeMasterPass": { + "message": "마스터 비밀번호 다시 입력" + }, + "masterPassHint": { + "message": "마스터 비밀번호 힌트 (선택)" + }, + "settings": { + "message": "설정" + }, + "passwordHint": { + "message": "비밀번호 힌트" + }, + "enterEmailToGetHint": { + "message": "마스터 비밀번호 힌트를 받으려면 계정의 이메일 주소를 입력하세요." + }, + "getMasterPasswordHint": { + "message": "마스터 비밀번호 힌트 얻기" + }, + "emailRequired": { + "message": "이메일은 반드시 입력해야 합니다." + }, + "invalidEmail": { + "message": "잘못된 이메일 주소입니다." + }, + "masterPassRequired": { + "message": "마스터 비밀번호는 반드시 입력해야 합니다." + }, + "masterPassLength": { + "message": "마스터 비밀번호는 최소 8자 이상이어야 합니다." + }, + "masterPassDoesntMatch": { + "message": "마스터 비밀번호 확인과 마스터 비밀번호가 일치하지 않습니다." + }, + "newAccountCreated": { + "message": "계정 생성이 완료되었습니다! 이제 로그인하실 수 있습니다." + }, + "masterPassSent": { + "message": "마스터 비밀번호 힌트가 담긴 이메일을 보냈습니다." + }, + "unexpectedError": { + "message": "예기치 못한 오류가 발생했습니다." + }, + "itemInformation": { + "message": "항목 정보" + }, + "noItemsInList": { + "message": "항목이 없습니다." + }, + "sendVerificationCode": { + "message": "이메일로 인증 코드 보내기" + }, + "sendCode": { + "message": "코드 전송" + }, + "codeSent": { + "message": "코드 전송됨" + }, + "verificationCode": { + "message": "인증 코드" + }, + "confirmIdentity": { + "message": "계속하려면 암호를 확인하세요." + }, + "verificationCodeRequired": { + "message": "인증 코드는 반드시 입력해야 합니다." + }, + "invalidVerificationCode": { + "message": "유효하지 않은 확인 코드" + }, + "continue": { + "message": "계속" + }, + "enterVerificationCodeApp": { + "message": "인증 앱에서 6자리 인증 코드를 입력하세요." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ 주소로 전송된 6자리 인증 코드를 입력하세요.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "$EMAIL$ 주소로 인증 이메일을 보냈습니다.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "기억하기" + }, + "sendVerificationCodeEmailAgain": { + "message": "인증 코드 이메일 다시 보내기" + }, + "useAnotherTwoStepMethod": { + "message": "다른 2단계 인증 사용" + }, + "insertYubiKey": { + "message": "YubiKey를 컴퓨터의 USB 포트에 삽입하고 버튼을 누르세요." + }, + "insertU2f": { + "message": "보안 키를 컴퓨터의 USB 포트에 삽입하고 버튼이 있는 경우 누르세요." + }, + "recoveryCodeDesc": { + "message": "모든 2단계 인증을 사용할 수 없는 상황인가요? 복구 코드를 사용하여 계정의 모든 2단계 인증을 비활성화할 수 있습니다." + }, + "recoveryCodeTitle": { + "message": "복구 코드" + }, + "authenticatorAppTitle": { + "message": "인증 앱" + }, + "authenticatorAppDesc": { + "message": "인증 앱(Authy, Google OTP 등)을 통하여 일회용 인증 코드를 생성합니다.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP 보안 키" + }, + "yubiKeyDesc": { + "message": "YubiKey를 사용하여 사용자의 계정에 접근합니다. YubiKey 4, 4 Nano, 4C 및 NEO 기기를 사용할 수 있습니다." + }, + "duoDesc": { + "message": "Duo Mobile 앱, SMS, 전화 통화를 사용한 Duo Security 또는 U2F 보안 키를 사용하여 인증하세요.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Duo Mobile 앱, SMS, 전화 통화를 사용한 조직용 Duo Security 또는 U2F 보안 키를 사용하여 인증하세요.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "WebAuthn이 활성화된 보안 키를 사용하여 계정에 접근하세요." + }, + "emailTitle": { + "message": "이메일" + }, + "emailDesc": { + "message": "인증 코드가 담긴 이메일을 다시 보냅니다." + }, + "loginUnavailable": { + "message": "로그인 불가능" + }, + "noTwoStepProviders": { + "message": "이 계정은 2단계 인증을 사용합니다. 그러나 설정된 2단계 인증 중 이 기기에서 지원하는 방식이 없습니다." + }, + "noTwoStepProviders2": { + "message": "더 많은 기기를 지원하는 2단계 인증 방식(인증 앱 등)을 추가하세요." + }, + "twoStepOptions": { + "message": "2단계 인증 옵션" + }, + "selfHostedEnvironment": { + "message": "자체 호스팅 환경" + }, + "selfHostedEnvironmentFooter": { + "message": "온-프레미스 Bitwarden이 호스팅되고 있는 서버의 기본 URL을 지정하세요." + }, + "customEnvironment": { + "message": "사용자 지정 환경" + }, + "customEnvironmentFooter": { + "message": "고급 사용자 전용 설정입니다. 각 서비스의 기본 URL을 개별적으로 지정할 수 있습니다." + }, + "baseUrl": { + "message": "서버 URL" + }, + "apiUrl": { + "message": "API 서버 URL" + }, + "webVaultUrl": { + "message": "웹 보관함 서버 URL" + }, + "identityUrl": { + "message": "ID 서버 URL" + }, + "notificationsUrl": { + "message": "알림 서버 URL" + }, + "iconsUrl": { + "message": "아이콘 서버 URL" + }, + "environmentSaved": { + "message": "환경 URL 값을 저장했습니다." + }, + "ok": { + "message": "확인" + }, + "yes": { + "message": "예" + }, + "no": { + "message": "아니오" + }, + "overwritePassword": { + "message": "비밀번호 덮어쓰기" + }, + "learnMore": { + "message": "더 알아보기" + }, + "featureUnavailable": { + "message": "기능 사용할 수 없음" + }, + "loggedOut": { + "message": "로그아웃됨" + }, + "loginExpired": { + "message": "로그인 세션이 만료되었습니다." + }, + "logOutConfirmation": { + "message": "정말 로그아웃하시겠습니까?" + }, + "logOut": { + "message": "로그아웃" + }, + "addNewLogin": { + "message": "새 로그인 추가" + }, + "addNewItem": { + "message": "새 항목 추가" + }, + "addNewFolder": { + "message": "새 폴더 추가" + }, + "view": { + "message": "보기" + }, + "account": { + "message": "계정" + }, + "loading": { + "message": "불러오는 중..." + }, + "lockVault": { + "message": "보관함 잠그기" + }, + "passwordGenerator": { + "message": "비밀번호 생성기" + }, + "contactUs": { + "message": "문의하기" + }, + "getHelp": { + "message": "도움말" + }, + "fileBugReport": { + "message": "버그 보고서 첨부" + }, + "blog": { + "message": "블로그" + }, + "followUs": { + "message": "팔로우하기" + }, + "syncVault": { + "message": "보관함 동기화" + }, + "changeMasterPass": { + "message": "마스터 비밀번호 변경" + }, + "changeMasterPasswordConfirmation": { + "message": "bitwarden.com 웹 보관함에서 마스터 비밀번호를 바꿀 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "fingerprintPhrase": { + "message": "지문 구절", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "계정 지문 구절", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "웹 보관함으로 이동" + }, + "getMobileApp": { + "message": "모바일 앱 설치" + }, + "getBrowserExtension": { + "message": "브라우저 확장 프로그램 설치" + }, + "syncingComplete": { + "message": "동기화 완료" + }, + "syncingFailed": { + "message": "동기화 실패" + }, + "yourVaultIsLocked": { + "message": "보관함이 잠겨 있습니다. 마스터 비밀번호를 입력하여 계속하세요." + }, + "unlock": { + "message": "잠금 해제" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ 에 $EMAIL$ 로 로그인했습니다.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "잘못된 마스터 비밀번호" + }, + "twoStepLoginConfirmation": { + "message": "2단계 인증은 보안 키, 인증 앱, SMS, 전화 통화 등의 다른 기기로 사용자의 로그인 시도를 검증하여 사용자의 계정을 더욱 안전하게 만듭니다. 2단계 인증은 bitwarden.com 웹 보관함에서 활성화할 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "twoStepLogin": { + "message": "2단계 인증" + }, + "vaultTimeout": { + "message": "보관함 시간 제한" + }, + "vaultTimeoutDesc": { + "message": "보관함이 언제까지 시간을 제한하고 선택된 행동을 수행하지 선택해주세요." + }, + "immediately": { + "message": "즉시" + }, + "tenSeconds": { + "message": "10초" + }, + "twentySeconds": { + "message": "20초" + }, + "thirtySeconds": { + "message": "30초" + }, + "oneMinute": { + "message": "1분" + }, + "twoMinutes": { + "message": "2분" + }, + "fiveMinutes": { + "message": "5분" + }, + "fifteenMinutes": { + "message": "15분" + }, + "thirtyMinutes": { + "message": "30분" + }, + "oneHour": { + "message": "1시간" + }, + "fourHours": { + "message": "4시간" + }, + "onIdle": { + "message": "시스템 유휴 시" + }, + "onSleep": { + "message": "시스템 절전 시" + }, + "onLocked": { + "message": "시스템 잠금 시" + }, + "onRestart": { + "message": "다시 시작 시" + }, + "never": { + "message": "잠그지 않음" + }, + "security": { + "message": "보안" + }, + "clearClipboard": { + "message": "클립보드 비우기", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "자동으로 클립보드에 복사된 값을 제거합니다.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "웹 사이트 아이콘 사용 안 함" + }, + "disableFaviconDesc": { + "message": "웹 사이트 아이콘을 사용하면 보관함 각 항목 옆에 이미지를 보여줍니다." + }, + "enableMinToTray": { + "message": "알림 영역으로 최소화" + }, + "enableMinToTrayDesc": { + "message": "창을 최소화하면 작업 표시줄 대신 알림 영역에 아이콘을 표시합니다." + }, + "enableMinToMenuBar": { + "message": "메뉴 막대로 최소화" + }, + "enableMinToMenuBarDesc": { + "message": "창을 최소화하면 메뉴 막대에 아이콘을 표시합니다." + }, + "enableCloseToTray": { + "message": "트레이 아이콘으로 닫기" + }, + "enableCloseToTrayDesc": { + "message": "창을 닫으면 프로그램 종료 대신 알림 영역에 아이콘으로 표시합니다." + }, + "enableCloseToMenuBar": { + "message": "메뉴 막대로 닫기" + }, + "enableCloseToMenuBarDesc": { + "message": "창을 닫으면 메뉴 막대에 아이콘을 표시합니다." + }, + "enableTray": { + "message": "알림 영역 아이콘 사용" + }, + "enableTrayDesc": { + "message": "항상 알림 영역에 아이콘을 표시합니다." + }, + "startToTray": { + "message": "트레이 아이콘으로 시작" + }, + "startToTrayDesc": { + "message": "응용프로그램을 시작할 때 알림 영역에 아이콘으로 표시합니다." + }, + "startToMenuBar": { + "message": "메뉴 막대에서 시작하기" + }, + "startToMenuBarDesc": { + "message": "앱을 시작할 때 메뉴 바에 아이콘으로 표시합니다." + }, + "openAtLogin": { + "message": "로그인할 때 자동으로 실행" + }, + "openAtLoginDesc": { + "message": "로그인할 때 Bitwarden 데스크톱 앱을 자동으로 실행합니다." + }, + "alwaysShowDock": { + "message": "Dock에 항상 표시하기" + }, + "alwaysShowDockDesc": { + "message": "메뉴 막대에 숨겨진 경우에도 Bitwarden 아이콘을 Dock에 표시합니다." + }, + "confirmTrayTitle": { + "message": "알림 영역 비활성화 확인" + }, + "confirmTrayDesc": { + "message": "이 설정을 끄면 알림 영역과 관련된 다른 모든 설정이 함께 꺼집니다." + }, + "language": { + "message": "언어(Language)" + }, + "languageDesc": { + "message": "애플리케이션에 사용할 언어를 변경합니다. 설정을 적용하려면 애플리케이션을 다시 시작해야 합니다." + }, + "theme": { + "message": "테마" + }, + "themeDesc": { + "message": "애플리케이션의 색상 테마를 변경합니다." + }, + "dark": { + "message": "어두운 테마", + "description": "Dark color" + }, + "light": { + "message": "밝은 테마", + "description": "Light color" + }, + "copy": { + "message": "복사", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "업데이트 확인" + }, + "version": { + "message": "$VERSION_NUM$ 버전", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "다시 시작하여 업데이트" + }, + "restartToUpdateDesc": { + "message": "$VERSION_NUM$ 버전을 설치할 준비가 되었습니다. 설치를 완료하려면 애플리케이션을 다시 시작해야 합니다. 지금 다시 시작하고 업데이트하시겠습니까?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "업데이트 사용 가능" + }, + "updateAvailableDesc": { + "message": "업데이트가 있습니다. 지금 다운로드하시겠습니까?" + }, + "restart": { + "message": "다시 시작" + }, + "later": { + "message": "나중에" + }, + "noUpdatesAvailable": { + "message": "사용할 수 있는 업데이트가 없습니다. 최신 버전을 사용하고 있습니다." + }, + "updateError": { + "message": "업데이트 오류" + }, + "unknown": { + "message": "알 수 없음" + }, + "copyUsername": { + "message": "사용자 이름 복사" + }, + "copyNumber": { + "message": "번호 복사", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "보안 코드 복사", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "프리미엄 멤버십" + }, + "premiumManage": { + "message": "멤버십 관리" + }, + "premiumManageAlert": { + "message": "bitwarden.com 웹 보관함에서 멤버십을 관리할 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "premiumRefresh": { + "message": "멤버십 새로 고침" + }, + "premiumNotCurrentMember": { + "message": "프리미엄 사용자가 아닙니다." + }, + "premiumSignUpAndGet": { + "message": "프리미엄 멤버십에 가입하면 얻을 수 있는 것:" + }, + "premiumSignUpStorage": { + "message": "1GB의 암호화된 파일 저장소." + }, + "premiumSignUpTwoStep": { + "message": "YubiKey나 FIDO U2F, Duo 등의 추가적인 2단계 인증 옵션." + }, + "premiumSignUpReports": { + "message": "보관함을 안전하게 유지하기 위한 암호 위생, 계정 상태, 데이터 유출 보고서" + }, + "premiumSignUpTotp": { + "message": "보관함에 등록된 로그인 항목을 위한 TOTP 인증 코드(2FA) 생성기." + }, + "premiumSignUpSupport": { + "message": "고객 지원 우선 순위 제공." + }, + "premiumSignUpFuture": { + "message": "앞으로 추가될 모든 프리미엄 기능을 사용할 수 있습니다. 기대하세요!" + }, + "premiumPurchase": { + "message": "프리미엄 멤버십 구입" + }, + "premiumPurchaseAlert": { + "message": "bitwarden.com 웹 보관함에서 프리미엄 멤버십을 구입할 수 있습니다. 지금 웹 사이트를 방문하시겠습니까?" + }, + "premiumCurrentMember": { + "message": "프리미엄 사용자입니다!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden을 지원해 주셔서 감사합니다." + }, + "premiumPrice": { + "message": "이 모든 기능을 연 $PRICE$에 이용하실 수 있습니다!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "새로 고침 완료" + }, + "passwordHistory": { + "message": "비밀번호 변경 기록" + }, + "clear": { + "message": "삭제", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "비밀번호가 없습니다." + }, + "undo": { + "message": "실행 취소" + }, + "redo": { + "message": "다시 실행" + }, + "cut": { + "message": "잘라내기", + "description": "Cut to clipboard" + }, + "paste": { + "message": "붙여넣기", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "모두 선택" + }, + "zoomIn": { + "message": "확대" + }, + "zoomOut": { + "message": "축소" + }, + "resetZoom": { + "message": "확대 / 축소 수준 초기화" + }, + "toggleFullScreen": { + "message": "전체 화면 전환" + }, + "reload": { + "message": "새로 고침" + }, + "toggleDevTools": { + "message": "개발자 도구" + }, + "minimize": { + "message": "최소화", + "description": "Minimize window" + }, + "zoom": { + "message": "확대/축소" + }, + "bringAllToFront": { + "message": "모두 앞으로 가져오기", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Bitwarden 정보" + }, + "services": { + "message": "서비스" + }, + "hideBitwarden": { + "message": "Bitwarden 숨기기" + }, + "hideOthers": { + "message": "다른 항목 숨기기" + }, + "showAll": { + "message": "모두 보기" + }, + "quitBitwarden": { + "message": "Bitwarden 종료" + }, + "valueCopied": { + "message": "$VALUE$를 클립보드에 복사함", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "도움말" + }, + "window": { + "message": "창" + }, + "checkPassword": { + "message": "비밀번호가 노출되었는지 확인합니다." + }, + "passwordExposed": { + "message": "이 비밀번호는 데이터 유출에 $VALUE$회 노출되었습니다. 비밀번호를 변경하는 것이 좋습니다.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "이 비밀번호는 데이터 유출 목록에 없습니다. 사용하기에 안전한 비밀번호입니다." + }, + "baseDomain": { + "message": "기본 도메인", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "도메인 이름", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "호스트", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "정확히 일치" + }, + "startsWith": { + "message": "...으로 시작" + }, + "regEx": { + "message": "정규 표현식", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "일치 인식", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "기본 일치 인식", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "표시 / 숨기기" + }, + "organization": { + "message": "조직", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "기본값" + }, + "exit": { + "message": "끝내기" + }, + "showHide": { + "message": "표시 / 숨기기", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "알림 영역으로 숨기기" + }, + "alwaysOnTop": { + "message": "항상 위에", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "업데이트됨", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "비밀번호 업데이트됨", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "보관함 내보내기" + }, + "fileFormat": { + "message": "파일 형식" + }, + "warning": { + "message": "경고", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "보관함 내보내기 확인" + }, + "exportWarningDesc": { + "message": "내보내기는 보관함 데이터가 암호화되지 않은 형식으로 포함됩니다. 내보낸 파일을 안전하지 않은 채널(예: 이메일)을 통해 저장하거나 보내지 마십시오. 사용이 끝난 후에는 즉시 삭제하십시오." + }, + "encExportKeyWarningDesc": { + "message": "이 내보내기는 계정의 암호화 키를 사용하여 데이터를 암호화합니다. 추후 계정의 암호화 키를 교체할 경우 다시 내보내기를 진행해야 합니다. 그러지 않을 경우 이 내보내기 파일을 해독할 수 없게 됩니다." + }, + "encExportAccountWarningDesc": { + "message": "모든 Bitwarden 사용자 계정은 고유한 계정 암호화 키를 가지고 있습니다. 따라서, 다른 계정에서는 암호화된 내보내기를 가져올 수 없습니다." + }, + "noOrganizationsList": { + "message": "속해 있는 조직이 없습니다. 조직에 속하면 다른 사용자들과 항목을 안전하게 공유할 수 있습니다." + }, + "noCollectionsInList": { + "message": "컬렉션이 없습니다." + }, + "ownership": { + "message": "소유자" + }, + "whoOwnsThisItem": { + "message": "이 항목의 소유자는 누구입니까?" + }, + "strong": { + "message": "강함", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "괜찮음", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "약함", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "취약한 마스터 비밀번호" + }, + "weakMasterPasswordDesc": { + "message": "선택한 마스터 비밀번호는 취약합니다. Bitwarden 계정을 확실히 보호하려면 강력한 마스터 비밀번호(혹은 패스프레이즈)를 사용해야 합니다. 정말 이 마스터 비밀번호를 사용하시겠습니까?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "PIN 코드를 사용하여 잠금 해제" + }, + "setYourPinCode": { + "message": "Bitwarden 잠금해제에 사용될 PIN 코드를 설정합니다. 이 애플리케이션에서 완전히 로그아웃할 경우 PIN 설정이 초기화됩니다." + }, + "pinRequired": { + "message": "PIN 코드가 필요합니다." + }, + "invalidPin": { + "message": "잘못된 PIN 코드입니다." + }, + "unlockWithWindowsHello": { + "message": "Windows Hello를 사용하여 잠금 해제" + }, + "windowsHelloConsentMessage": { + "message": "Bitwarden에서 인증을 요청합니다." + }, + "unlockWithTouchId": { + "message": "Touch ID를 사용하여 잠금 해제" + }, + "touchIdConsentMessage": { + "message": "보관함 잠금 해제" + }, + "noAutoPromptWindowsHello": { + "message": "시작할 때 Windows Hello 요구하지 않음" + }, + "noAutoPromptTouchId": { + "message": "시작할 때 Touch ID 요구하지 않음" + }, + "lockWithMasterPassOnRestart": { + "message": "다시 시작 시 마스터 비밀번호로 잠금" + }, + "preferences": { + "message": "설정" + }, + "enableMenuBar": { + "message": "메뉴 막대 아이콘 사용" + }, + "enableMenuBarDesc": { + "message": "항상 메뉴 막대에 아이콘을 표시합니다." + }, + "hideToMenuBar": { + "message": "메뉴 막대에 숨기기" + }, + "selectOneCollection": { + "message": "반드시 하나 이상의 컬렉션을 선택해야 합니다." + }, + "premiumUpdated": { + "message": "프리미엄으로 업그레이드했습니다." + }, + "restore": { + "message": "복원" + }, + "premiumManageAlertAppStore": { + "message": "App Store에서 구독을 관리할 수 있습니다. 지금 App Store에 접속하시겠습니까?" + }, + "legal": { + "message": "법적", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "이용약관" + }, + "privacyPolicy": { + "message": "개인 정보 보호 정책" + }, + "unsavedChangesConfirmation": { + "message": "정말로 떠나시겠습니까? 지금 떠난다면 현재 정보는 저장되지 않습니다." + }, + "unsavedChangesTitle": { + "message": "저장되지 않은 변경 사항" + }, + "clone": { + "message": "복제" + }, + "passwordGeneratorPolicyInEffect": { + "message": "하나 이상의 단체 정책이 생성기 규칙에 영항을 미치고 있습니다." + }, + "vaultTimeoutAction": { + "message": "보관함 시간 제한 초과시 동작" + }, + "vaultTimeoutActionLockDesc": { + "message": "잠긴 보관함에 다시 접근하려면 마스터 비밀번호를 입력해야 합니다." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "로그아웃한 보관함에 다시 접근하려면 다시 인증해야 합니다." + }, + "lock": { + "message": "잠금", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "휴지통", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "휴지통 검색" + }, + "permanentlyDeleteItem": { + "message": "영구적으로 항목 삭제" + }, + "permanentlyDeleteItemConfirmation": { + "message": "정말로 이 항목을 영구적으로 삭제하시겠습니까?" + }, + "permanentlyDeletedItem": { + "message": "영구적으로 삭제된 항목" + }, + "restoreItem": { + "message": "항목 복원" + }, + "restoreItemConfirmation": { + "message": "정말 이 항목을 복원하시겠습니까?" + }, + "restoredItem": { + "message": "복원된 항목" + }, + "permanentlyDelete": { + "message": "영구적으로 삭제" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "로그아웃하면 보관함에 대한 모든 접근이 제거되며 시간 제한을 초과하면 온라인 인증을 요구합니다. 정말로 이 설정을 사용하시겠습니까?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "시간 제한 초과시 동작 확인" + }, + "enterpriseSingleSignOn": { + "message": "엔터프라이즈 통합 인증 (SSO)" + }, + "setMasterPassword": { + "message": "마스터 비밀번호 설정" + }, + "ssoCompleteRegistration": { + "message": "SSO 로그인을 하기 위해서 보관함에 접근하고 보호할 수 있도록 마스터 비밀번호를 설정해주세요." + }, + "newMasterPass": { + "message": "새 마스터 비밀번호" + }, + "confirmNewMasterPass": { + "message": "새 마스터 비밀번호 확인" + }, + "masterPasswordPolicyInEffect": { + "message": "하나 이상의 단체 정책이 마스터 비밀번호가 다음 사항을 따르도록 요구합니다:" + }, + "policyInEffectMinComplexity": { + "message": "최소 복잡도 점수 $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "최소 길이 $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "하나 이상의 대문자 포함" + }, + "policyInEffectLowercase": { + "message": "하나 이상의 소문자 포함" + }, + "policyInEffectNumbers": { + "message": "하나 이상의 숫자 포함" + }, + "policyInEffectSpecial": { + "message": "하나 이상의 다음 특수문자 포함 $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "새 마스터 비밀번호가 정책 요구 사항을 따르지 않습니다." + }, + "acceptPolicies": { + "message": "이 박스를 체크하면 다음에 동의하는 것으로 간주됩니다:" + }, + "acceptPoliciesError": { + "message": "서비스 약관 및 개인 정보 보호 정책을 확인하지 않았습니다." + }, + "enableBrowserIntegration": { + "message": "브라우저와 연결 활성화" + }, + "enableBrowserIntegrationDesc": { + "message": "브라우저와 연결하면 브라우저에서 생체 인식을 사용할 수 있습니다." + }, + "browserIntegrationMasOnlyTitle": { + "message": "브라우저와 연결 지원되지 않음" + }, + "browserIntegrationMasOnlyDesc": { + "message": "브라우저와 연결은 현재 Mac App Store 버전에서만 지원됩니다." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "브라우저와 연결 지원되지 않음" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "현재 Microsoft Store 버전에서는 브라우저와 연결이 지원되지 않습니다." + }, + "enableBrowserIntegrationFingerprint": { + "message": "브라우저와 연결을 위해 인증이 필요함" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "데스크탑 앱과 브라우저를 연결할 때 지문 구절을 확인하는 과정을 제공함으로써 추가적인 보안을 제공합니다. 이 옵션을 켜면, 연결이 설정될 때마다 사용자의 확인을 요구합니다." + }, + "approve": { + "message": "승인" + }, + "verifyBrowserTitle": { + "message": "브라우저와 연결 인증" + }, + "verifyBrowserDesc": { + "message": "다음의 지문 구절이 브라우저 확장 프로그램에 표시된 지문 구절과 동일한지 확인해주세요." + }, + "biometricsNotEnabledTitle": { + "message": "생체 인식이 활성화되지 않음" + }, + "biometricsNotEnabledDesc": { + "message": "브라우저에서 생체 인식을 사용하기 위해서는 설정에서 데스크톱 생체 인식을 먼저 활성화해야 합니다." + }, + "personalOwnershipSubmitError": { + "message": "엔터프라이즈 정책으로 인해 개인 보관함에 항목을 저장할 수 없습니다. 조직에서 소유권 설정을 변경한 다음, 사용 가능한 컬렉션 중에서 선택해주세요." + }, + "hintEqualsPassword": { + "message": "비밀번호 힌트는 비밀번호와 같을 수 없습니다." + }, + "personalOwnershipPolicyInEffect": { + "message": "조직의 정책이 소유권 설정에 영향을 미치고 있습니다." + }, + "allSends": { + "message": "모든 Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "파일" + }, + "sendTypeText": { + "message": "텍스트" + }, + "searchSends": { + "message": "Send 검색", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send 편집", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "내 보관함" + }, + "text": { + "message": "텍스트" + }, + "deletionDate": { + "message": "삭제 날짜" + }, + "deletionDateDesc": { + "message": "이 Send가 정해진 일시에 영구적으로 삭제됩니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "만료 날짜" + }, + "expirationDateDesc": { + "message": "설정할 경우, 이 Send에 대한 접근 권한이 정해진 일시에 만료됩니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "최대 접근 횟수" + }, + "maxAccessCountDesc": { + "message": "설정할 경우, 최대 접근 횟수에 도달할 때 이 Send에 접근할 수 없게 됩니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "현재 접근 횟수" + }, + "disableSend": { + "message": "이 Send를 비활성화하여 아무도 접근할 수 없게 합니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "이 Send에 접근하기 위해 암호를 입력하도록 선택적으로 요구합니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "이 Send에 대한 비공개 메모", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "링크 보내기", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "링크 보내기", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Send에 접근할 때 기본적으로 텍스트를 숨김", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send 생성함", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send 수정함", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send 삭제함", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "새 비밀번호" + }, + "whatTypeOfSend": { + "message": "어떤 유형의 Send인가요?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send 생성", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "전송하려는 텍스트" + }, + "sendFileDesc": { + "message": "전송하려는 파일" + }, + "days": { + "message": "$DAYS$일", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1일" + }, + "custom": { + "message": "사용자 지정" + }, + "deleteSendConfirmation": { + "message": "정말 이 Send를 삭제하시겠습니까?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Send 링크를 클립보드에 복사", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "저장할 때 이 Send를 공유하기 위한 링크를 클립보드에 복사합니다." + }, + "sendDisabled": { + "message": "Send 비활성화됨", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "엔터프라이즈 정책으로 인해 이미 생성된 Send를 삭제하는 것만 허용됩니다.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "링크 복사" + }, + "disabled": { + "message": "비활성화됨" + }, + "maxAccessCountReached": { + "message": "최대 접근 횟수 도달" + }, + "expired": { + "message": "만료됨" + }, + "pendingDeletion": { + "message": "삭제 대기 중" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn 인증" + }, + "hideEmail": { + "message": "받는 사람으로부터 나의 이메일 주소 숨기기" + }, + "sendOptionsPolicyInEffect": { + "message": "하나 이상의 단체 정책이 Send 설정에 영향을 미치고 있습니다." + }, + "emailVerificationRequired": { + "message": "이메일 인증 필요함" + }, + "emailVerificationRequiredDesc": { + "message": "이 기능을 이용하기 위해서는 이메일을 인증해야 합니다." + }, + "passwordPrompt": { + "message": "마스터 비밀번호 재확인" + }, + "passwordConfirmation": { + "message": "마스터 비밀번호 확인" + }, + "passwordConfirmationDesc": { + "message": "이 작업은 보호되어 있습니다. 계속하려면 마스터 비밀번호를 입력하여 신원을 인증하세요." + }, + "updatedMasterPassword": { + "message": "마스터 비밀번호 변경됨" + }, + "updateMasterPassword": { + "message": "마스터 비밀번호 변경" + }, + "updateMasterPasswordWarning": { + "message": "최근에 조직 관리자가 마스터 비밀번호를 변경했습니다. 보관함에 액세스하려면 지금 업데이트해야 합니다. 계속하면 현재 세션에서 로그아웃되며 다시 로그인해야 합니다. 다른 장치의 활성 세션은 최대 1시간 동안 계속 활성 상태로 유지될 수 있습니다." + }, + "hours": { + "message": "시" + }, + "minutes": { + "message": "분" + }, + "vaultTimeoutPolicyInEffect": { + "message": "조직 정책이 보관함 제한 시간에 영향을 미치고 있습니다. 최대 허용 보관함 제한 시간은 $HOURS$시간 $MINUTES$분입니다", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "볼트 제한 시간이 조직에서 설정한 제한을 초과합니다." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "자동 등록" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "이 조직에는 자동으로 비밀번호 재설정에 등록하는 기업 정책이 있습니다. 등록하면 조직 관리자가 마스터 암호를 변경할 수 있습니다." + }, + "vaultExportDisabled": { + "message": "보관함 내보내기 비활성화됨" + }, + "personalVaultExportPolicyInEffect": { + "message": "하나 이상의 조직 정책이 개인 보관함을 내보내는 것을 제한하고 있습니다." + }, + "addAccount": { + "message": "계정 추가" + }, + "removeMasterPassword": { + "message": "마스터 비밀번호 제거" + }, + "removedMasterPassword": { + "message": "마스터 비밀번호가 제거되었습니다." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ 조직은 자체 호스팅 키 서버로 SSO를 사용하고 있습니다 이 조직의 멤버들은 로그인할 때에 마스터 비밀번호를 필요로 하지 않습니다.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "조직 나가기" + }, + "leaveOrganizationConfirmation": { + "message": "정말 이 조직을 떠나시겠습니까?" + }, + "leftOrganization": { + "message": "조직을 떠났습니다." + }, + "ssoKeyConnectorUnavailable": { + "message": "키 제공자와 통신할 수 없습니다. 다시 시도해보세요." + }, + "lockAllVaults": { + "message": "모든 보관함 잠그기" + }, + "accountLimitReached": { + "message": "5개 이상의 계정은 동시에 로그인할 수 없습니다." + }, + "accountPreferences": { + "message": "설정" + }, + "appPreferences": { + "message": "앱 설정 (모든 계정)" + }, + "accountSwitcherLimitReached": { + "message": "계정 개수 제한에 도달했습니다. 추가로 로그인하려면 다른 계정을 로그아웃 해주세요." + }, + "settingsTitle": { + "message": "$EMAIL$의 앱 설정", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "계정 전환" + }, + "options": { + "message": "선택" + }, + "sessionTimeout": { + "message": "세션 시간이 초과되었습니다. 다시 로그인해주세요." + }, + "exportingPersonalVaultTitle": { + "message": "개인 보관함을 내보내는 중" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "생성기" + }, + "whatWouldYouLikeToGenerate": { + "message": "무엇을 생성하실건가요?" + }, + "passwordType": { + "message": "비밀번호 유형" + }, + "regenerateUsername": { + "message": "아이디 재생성" + }, + "generateUsername": { + "message": "아이디 생성" + }, + "usernameType": { + "message": "아이디 유형" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "무작위" + }, + "randomWord": { + "message": "무작위 단어" + }, + "websiteName": { + "message": "웹사이트 이름" + }, + "service": { + "message": "서비스" + } +} diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json new file mode 100644 index 0000000000..43e96c79ba --- /dev/null +++ b/apps/desktop/src/locales/lv/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Atlases" + }, + "allItems": { + "message": "Visi vienumi" + }, + "favorites": { + "message": "Izlase" + }, + "types": { + "message": "Veidi" + }, + "typeLogin": { + "message": "Pierakstīšanās vienums" + }, + "typeCard": { + "message": "Karte" + }, + "typeIdentity": { + "message": "Identitāte" + }, + "typeSecureNote": { + "message": "Droša piezīme" + }, + "folders": { + "message": "Mapes" + }, + "collections": { + "message": "Krājumi" + }, + "searchVault": { + "message": "Meklēt glabātavā" + }, + "addItem": { + "message": "Pievienot vienumu" + }, + "shared": { + "message": "Kopīgots" + }, + "share": { + "message": "Kopīgot" + }, + "moveToOrganization": { + "message": "Pārvietot uz apvienību" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ pārvietots uz $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Izvēlies apvienību, uz kuru pārvietot šo vienumu. Pārvietošana nodod šī vienuma piederību apvienībai. Tu vairs nebūsi šī vienuma tiešais īpašnieks pēc tā pārvietošanas." + }, + "attachments": { + "message": "Pielikumi" + }, + "viewItem": { + "message": "Skatīt vienumu" + }, + "name": { + "message": "Nosaukums" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Jauns URI" + }, + "username": { + "message": "Lietotājvārds" + }, + "password": { + "message": "Parole" + }, + "passphrase": { + "message": "Paroles vārdkopa" + }, + "editItem": { + "message": "Labot vienumu" + }, + "emailAddress": { + "message": "E-pasta adrese" + }, + "verificationCodeTotp": { + "message": "Apstiprinājuma kods (TOTP)" + }, + "website": { + "message": "Tīmekļa vietne" + }, + "notes": { + "message": "Piezīmes" + }, + "customFields": { + "message": "Pielāgoti lauki" + }, + "launch": { + "message": "Palaist" + }, + "copyValue": { + "message": "Ievietot vērtību starpliktuvē", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Samazināt, kad ievieto starpliktuvē" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Samazināt, kad vienuma saturs tiek ievietots starpliktuvē." + }, + "toggleVisibility": { + "message": "Pārslēgt redzamību" + }, + "toggleCollapse": { + "message": "Pārslēgt sakļaušanu", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kartes īpašnieka vārds" + }, + "number": { + "message": "Numurs" + }, + "brand": { + "message": "Zīmols" + }, + "expiration": { + "message": "Derīgums" + }, + "securityCode": { + "message": "Drošības kods" + }, + "identityName": { + "message": "Identitātes nosaukums" + }, + "company": { + "message": "Uzņēmums" + }, + "ssn": { + "message": "Personas kods" + }, + "passportNumber": { + "message": "Pases numurs" + }, + "licenseNumber": { + "message": "Autovadītāja apliecības numurs" + }, + "email": { + "message": "E-pasts" + }, + "phone": { + "message": "Tālrunis" + }, + "address": { + "message": "Adrese" + }, + "premiumRequired": { + "message": "Nepieciešams Premium" + }, + "premiumRequiredDesc": { + "message": "Ir nepieciešama Premium dalība, lai izmantotu šo iespēju." + }, + "errorOccurred": { + "message": "Radusies kļūda." + }, + "error": { + "message": "Kļūda" + }, + "january": { + "message": "Janvāris" + }, + "february": { + "message": "Februāris" + }, + "march": { + "message": "Marts" + }, + "april": { + "message": "Aprīlis" + }, + "may": { + "message": "Maijs" + }, + "june": { + "message": "Jūnijs" + }, + "july": { + "message": "Jūlijs" + }, + "august": { + "message": "Augusts" + }, + "september": { + "message": "Septembris" + }, + "october": { + "message": "Oktobris" + }, + "november": { + "message": "Novembris" + }, + "december": { + "message": "Decembris" + }, + "ex": { + "message": "piem.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Uzruna" + }, + "mr": { + "message": "K-gs" + }, + "mrs": { + "message": "K-dze" + }, + "ms": { + "message": "Jk-dze" + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Derīguma mēnesis" + }, + "expirationYear": { + "message": "Derīguma gads" + }, + "select": { + "message": "Atlasīt" + }, + "other": { + "message": "Cits" + }, + "generatePassword": { + "message": "Veidot paroli" + }, + "type": { + "message": "Veids" + }, + "firstName": { + "message": "Vārds" + }, + "middleName": { + "message": "Citi vārdi" + }, + "lastName": { + "message": "Uzvārds" + }, + "fullName": { + "message": "Pilnais vārds" + }, + "address1": { + "message": "Adrese 1" + }, + "address2": { + "message": "Adrese 2" + }, + "address3": { + "message": "Adrese 3" + }, + "cityTown": { + "message": "Pilsēta / ciems" + }, + "stateProvince": { + "message": "Novads / pagasts" + }, + "zipPostalCode": { + "message": "Pasta indekss" + }, + "country": { + "message": "Valsts" + }, + "save": { + "message": "Saglabāt" + }, + "cancel": { + "message": "Atcelt" + }, + "delete": { + "message": "Dzēst" + }, + "favorite": { + "message": "Izlasē" + }, + "edit": { + "message": "Labot" + }, + "authenticatorKeyTotp": { + "message": "Autentificētāja atslēga (TOTP)" + }, + "folder": { + "message": "Mape" + }, + "newCustomField": { + "message": "Jauns pielāgotais lauks" + }, + "value": { + "message": "Vērtība" + }, + "dragToSort": { + "message": "Vilkt, lai kārtotu" + }, + "cfTypeText": { + "message": "Teksts" + }, + "cfTypeHidden": { + "message": "Paslēpts" + }, + "cfTypeBoolean": { + "message": "Patiesuma vērtība" + }, + "cfTypeLinked": { + "message": "Saistīts", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Saistīta vērtība", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Noņemt" + }, + "nameRequired": { + "message": "Nosaukums ir nepieciešams." + }, + "addedItem": { + "message": "Vienums pievienots" + }, + "editedItem": { + "message": "Vienums labots" + }, + "deleteItem": { + "message": "Izdzēst vienumu" + }, + "deleteFolder": { + "message": "Dzēst mapi" + }, + "deleteAttachment": { + "message": "Izdzēst pielikumu" + }, + "deleteItemConfirmation": { + "message": "Vai tiešām pārvietot uz atkritni?" + }, + "deletedItem": { + "message": "Vienums ir pārvietots uz atkritni" + }, + "overwritePasswordConfirmation": { + "message": "Vai tiešām pārrakstīt esošo paroli?" + }, + "overwriteUsername": { + "message": "Pārrakstīt lietotājvārdu" + }, + "overwriteUsernameConfirmation": { + "message": "Vai tiešām pārrakstīt pašreizējo lietotājvārdu?" + }, + "noneFolder": { + "message": "Nav mapes", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Pievienot mapi" + }, + "editFolder": { + "message": "Labot mapi" + }, + "regeneratePassword": { + "message": "Pārizveidot paroli" + }, + "copyPassword": { + "message": "Ievietot paroli starpliktuvē" + }, + "copyUri": { + "message": "Ievietot URI starpliktuvē" + }, + "copyVerificationCodeTotp": { + "message": "Ievietot apstiprinājuma kodu (TOTP) starpliktuvē" + }, + "length": { + "message": "Garums" + }, + "numWords": { + "message": "Vārdu skaits" + }, + "wordSeparator": { + "message": "Vārdu atdalītājs" + }, + "capitalize": { + "message": "Izmantot lielos sākumburtus", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Iekļaut ciparu" + }, + "close": { + "message": "Aizvērt" + }, + "minNumbers": { + "message": "Mazākais pieļaujamais ciparu skaits" + }, + "minSpecial": { + "message": "Mazākais pieļaujamais īpašo rakstzīmju skaits", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izvairīties no viegli sajaucamām rakstzīmēm" + }, + "searchCollection": { + "message": "Meklēt krājumā" + }, + "searchFolder": { + "message": "Meklēt mapē" + }, + "searchFavorites": { + "message": "Meklēt izlasē" + }, + "searchType": { + "message": "Meklēt veidu", + "description": "Search item type" + }, + "newAttachment": { + "message": "Pievienot jaunu pielikumu" + }, + "deletedAttachment": { + "message": "Pielikums izdzēsts" + }, + "deleteAttachmentConfirmation": { + "message": "Vai tiešām izdzēst šo pielikumu?" + }, + "attachmentSaved": { + "message": "Pielikums tika saglabāts." + }, + "file": { + "message": "Datne" + }, + "selectFile": { + "message": "Atlasīt datni." + }, + "maxFileSize": { + "message": "Lielākais pieļaujamais datnes izmērs ir 500 MB." + }, + "updateKey": { + "message": "Šo iespēju nevar izmantot, kamēr nav atjaunināta šifrēšanas atslēga." + }, + "editedFolder": { + "message": "Mape labota" + }, + "addedFolder": { + "message": "Mape pievienota" + }, + "deleteFolderConfirmation": { + "message": "Vai tiešām izdzēst šo mapi?" + }, + "deletedFolder": { + "message": "Mape izdzēsta" + }, + "loginOrCreateNewAccount": { + "message": "Pieraksties vai izveido jaunu kontu, lai piekļūtu drošajai glabātavai!" + }, + "createAccount": { + "message": "Izveidot kontu" + }, + "logIn": { + "message": "Pierakstīties" + }, + "submit": { + "message": "Iesniegt" + }, + "masterPass": { + "message": "Galvenā parole" + }, + "masterPassDesc": { + "message": "Galvenā parole ir parole, kas tiek izmantota, lai piekļūtu glabātavai. Ir ļoti svarīgi, ka tā netiek aizmirsta, jo tādā gadījumā to nav iespējams atgūt." + }, + "masterPassHintDesc": { + "message": "Galvenās paroles norāde var palīdzēt atcerēties paroli, ja tā ir aizmirsta." + }, + "reTypeMasterPass": { + "message": "Atkārtoti ievadīt galveno paroli" + }, + "masterPassHint": { + "message": "Galvenās paroles norāde (nav nepieciešama)" + }, + "settings": { + "message": "Iestatījumi" + }, + "passwordHint": { + "message": "Paroles norāde" + }, + "enterEmailToGetHint": { + "message": "Ievadiet sava konta e-pasta adresi, lai saņemtu galvenās paroles norādi!" + }, + "getMasterPasswordHint": { + "message": "Saņemt galvenās paroles norādi" + }, + "emailRequired": { + "message": "Ir jānorāda e-pasta adrese." + }, + "invalidEmail": { + "message": "Nederīga e-pasta adrese." + }, + "masterPassRequired": { + "message": "Ir jānorāda galvenā parole." + }, + "masterPassLength": { + "message": "Galvenajai parolei ir jābūt vismaz 8 rakstzīmes garai." + }, + "masterPassDoesntMatch": { + "message": "Galvenās paroles apstiprinājums nesakrīt." + }, + "newAccountCreated": { + "message": "Tavs jaunais konts ir izveidots. Tagad Tu vari pierakstīties." + }, + "masterPassSent": { + "message": "Mēs nosūtījām galvenās paroles norādi e-pastā." + }, + "unexpectedError": { + "message": "Ir radusies neparedzēta kļūda." + }, + "itemInformation": { + "message": "Vienuma informācija" + }, + "noItemsInList": { + "message": "Nav vienumu, ko parādīt." + }, + "sendVerificationCode": { + "message": "Sūtīt apstiprinājuma kodu uz e-pastu" + }, + "sendCode": { + "message": "Nosūtīt kodu" + }, + "codeSent": { + "message": "Kods nosūtīts" + }, + "verificationCode": { + "message": "Apstiprinājuma kods" + }, + "confirmIdentity": { + "message": "Apstiprināt identitāti, lai turpinātu." + }, + "verificationCodeRequired": { + "message": "Ir nepieciešams apstiprinājuma kods." + }, + "invalidVerificationCode": { + "message": "Nederīgs apstiprinājuma kods" + }, + "continue": { + "message": "Turpināt" + }, + "enterVerificationCodeApp": { + "message": "Ievadi 6 ciparu apstiprinājuma kodu no autentificētāja lietotnes!" + }, + "enterVerificationCodeEmail": { + "message": "Ievadi 6 ciparu apstiprinājuma kodu, kas tika nosūtīts uz $EMAIL$!", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-pasts apstiprināšanai nosūtīts uz $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Atcerēties mani" + }, + "sendVerificationCodeEmailAgain": { + "message": "Sūtīt apstiprinājuma koda e-pastu vēlreiz" + }, + "useAnotherTwoStepMethod": { + "message": "Izmantot citu divpakāpju pierakstīšanās veidu" + }, + "insertYubiKey": { + "message": "Ievieto savu YubiKey datora USB ligzdā un pieskaries tā pogai!" + }, + "insertU2f": { + "message": "Ievieto savu drošības atslēgu datora USB ligzdā! Ja tai ir poga, pieskaries tai!" + }, + "recoveryCodeDesc": { + "message": "Zaudēta piekļuve visiem divpakāpju nodrošinātājiem? Izmanto atkopšanas kodus, lai atspējotu visus sava konta divpakāpju nodrošinātājus!" + }, + "recoveryCodeTitle": { + "message": "Atgūšanas kods" + }, + "authenticatorAppTitle": { + "message": "Autentificētāja lietotne" + }, + "authenticatorAppDesc": { + "message": "Izmanto autentificētāja lietotni (piemēram, Authy vai Google autentifikators), lai izveidotu laikā balstītus apstiprinājuma kodus!", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP drošības atslēga" + }, + "yubiKeyDesc": { + "message": "Izmanto YubiKey, lai piekļūtu savam kontam! Darbojas ar YubiKey 4, 4 Nano, 4C un NEO ierīcēm." + }, + "duoDesc": { + "message": "Apstiprini ar Duo Security, izmantojot Duo Mobile lietotni, īsziņu, tālruņa zvanu vai U2F drošības atslēgu!", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Apstiprini ar Duo Security savā apvienībā, izmantojot Duo Mobile lietotni, īsziņu, tālruņa zvanu vai U2F drošības atslēgu!", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Izmantot jebkuru WebAuthn atbalstošu drošības atslēgu, lai piekļūtu kontam." + }, + "emailTitle": { + "message": "E-pasts" + }, + "emailDesc": { + "message": "Apstiprinājuma kodi tiks nosūtīti e-pastā." + }, + "loginUnavailable": { + "message": "Pierakstīšanās nav pieejama" + }, + "noTwoStepProviders": { + "message": "Šim kontam ir iespējota divpakāpju pierakstīšanās, bet šajā ierīcē netiek atbalstīts neviens no uzstādītajiem divpakāpju pārbaudes nodrošinātājiem." + }, + "noTwoStepProviders2": { + "message": "Lūgums pievienot papildus nodrošinātājus, kas tiek labāk atbalstīti dažādās ierīcēs (piemēram, autentificētāja lietotne)." + }, + "twoStepOptions": { + "message": "Divpakāpju pierakstīšanās iespējas" + }, + "selfHostedEnvironment": { + "message": "Pašuzturēta vide" + }, + "selfHostedEnvironmentFooter": { + "message": "Norādīt pašuzstādīta Bitwarden pamata URL." + }, + "customEnvironment": { + "message": "Pielāgota vide" + }, + "customEnvironmentFooter": { + "message": "Pieredzējušiem lietotājiem. Ir iespējams norādīt URL katram pakalpojumam atsevišķi." + }, + "baseUrl": { + "message": "Servera URL" + }, + "apiUrl": { + "message": "API servera URL" + }, + "webVaultUrl": { + "message": "Tīmekļa glabātavas servera URL" + }, + "identityUrl": { + "message": "Identitātes servera URL" + }, + "notificationsUrl": { + "message": "Paziņojumu servera URL" + }, + "iconsUrl": { + "message": "Ikonu servera URL" + }, + "environmentSaved": { + "message": "Vides URL ir saglabāti." + }, + "ok": { + "message": "Labi" + }, + "yes": { + "message": "Jā" + }, + "no": { + "message": "Nē" + }, + "overwritePassword": { + "message": "Pārrakstīt paroli" + }, + "learnMore": { + "message": "Uzzināt vairāk" + }, + "featureUnavailable": { + "message": "Iespēja nav pieejama" + }, + "loggedOut": { + "message": "Izrakstījies" + }, + "loginExpired": { + "message": "Pierakstīšanās sesija ir beigusies." + }, + "logOutConfirmation": { + "message": "Vai tiešām izrakstīties?" + }, + "logOut": { + "message": "Izrakstīties" + }, + "addNewLogin": { + "message": "Pievienot jaunu pierakstīšanās vienumu" + }, + "addNewItem": { + "message": "Pievienot jaunu vienumu" + }, + "addNewFolder": { + "message": "Pievienot jaunu mapi" + }, + "view": { + "message": "Skats" + }, + "account": { + "message": "Konts" + }, + "loading": { + "message": "Notiek ielāde..." + }, + "lockVault": { + "message": "Aizslēgt glabātavu" + }, + "passwordGenerator": { + "message": "Paroļu veidotājs" + }, + "contactUs": { + "message": "Sazināties ar mums" + }, + "getHelp": { + "message": "Saņemt palīdzību" + }, + "fileBugReport": { + "message": "Iesniegt kļūdas ziņojumu" + }, + "blog": { + "message": "Emuārs" + }, + "followUs": { + "message": "Sekot mums" + }, + "syncVault": { + "message": "Sinhronizēt glabātavu" + }, + "changeMasterPass": { + "message": "Mainīt galveno paroli" + }, + "changeMasterPasswordConfirmation": { + "message": "Galveno paroli ir iespējams mainīt bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + }, + "fingerprintPhrase": { + "message": "Atpazīšanas vārdkopa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Konta atpazīšanas vārdkopa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Doties uz tīmekļa glabātavu" + }, + "getMobileApp": { + "message": "Iegūt tālruņa lietotni" + }, + "getBrowserExtension": { + "message": "Iegūt pārlūka paplašinājumu" + }, + "syncingComplete": { + "message": "Sinhronizācija pabeigta" + }, + "syncingFailed": { + "message": "Sinhronizācija neizdevās" + }, + "yourVaultIsLocked": { + "message": "Glabātava ir slēgta. Nepieciešams norādīt galveno paroli, lai turpinātu." + }, + "unlock": { + "message": "Atslēgt" + }, + "loggedInAsOn": { + "message": "Pierakstījies $HOSTNAME$ kā $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Nederīga galvenā parole" + }, + "twoStepLoginConfirmation": { + "message": "Divpakāpju pieslēgšanās padara kontu krietni drošāku, pieprasot apstiprināt pierakstīšanos ar tādu citu ierīču vai pakalpojumu starpniecību kā drošības atslēga, autentificētāja lietotne, īsziņa, tālruņa zvans vai e-pasts. Divpakāpju pierakstīšanos var iespējot bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + }, + "twoStepLogin": { + "message": "Divpakāpju pierakstīšanās" + }, + "vaultTimeout": { + "message": "Glabātavas noildze" + }, + "vaultTimeoutDesc": { + "message": "Izvēlēties, kad glabātavai iestāsies noildze un tiks izpildīta atlasītā darbība." + }, + "immediately": { + "message": "Nekavējoties" + }, + "tenSeconds": { + "message": "10 sekundes" + }, + "twentySeconds": { + "message": "20 sekundes" + }, + "thirtySeconds": { + "message": "30 sekundes" + }, + "oneMinute": { + "message": "1 minūte" + }, + "twoMinutes": { + "message": "2 minūtes" + }, + "fiveMinutes": { + "message": "5 minūtes" + }, + "fifteenMinutes": { + "message": "15 minūtes" + }, + "thirtyMinutes": { + "message": "30 minūtes" + }, + "oneHour": { + "message": "1 stunda" + }, + "fourHours": { + "message": "4 stundas" + }, + "onIdle": { + "message": "Sistēmas dīkstāvē" + }, + "onSleep": { + "message": "Pēc sistēmas iemigšanas" + }, + "onLocked": { + "message": "Pēc sistēmas aizslēgšanas" + }, + "onRestart": { + "message": "Pārsāknējot" + }, + "never": { + "message": "Nekad" + }, + "security": { + "message": "Drošība" + }, + "clearClipboard": { + "message": "Notīrīt starpliktuvi", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automātiski noņemt starpliktuvē ievietotās vērtības.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Atspējot tīmekļa vietņu ikonas" + }, + "disableFaviconDesc": { + "message": "Tīmekļā vietņu ikonas nodrošina atpazīstamu attēlu pie katra glabātavas pieteikšanās vienuma." + }, + "enableMinToTray": { + "message": "Samazināt ikonu joslā" + }, + "enableMinToTrayDesc": { + "message": "Tā vietā, lai samazinātu logu, parādīt ikonu sistēmas joslā." + }, + "enableMinToMenuBar": { + "message": "Samazināt izvēļņjoslā" + }, + "enableMinToMenuBarDesc": { + "message": "Tā vietā, lai samazinātu logu, parādīt ikonu izvēļņjoslā." + }, + "enableCloseToTray": { + "message": "Aizverot pārvietot uz ikonu joslu" + }, + "enableCloseToTrayDesc": { + "message": "Tā vietā, lai aizvērtu logu, parādīt ikonu sistēmas joslā." + }, + "enableCloseToMenuBar": { + "message": "Aizvērt izvēļņjoslā" + }, + "enableCloseToMenuBarDesc": { + "message": "Tā vietā, lai aizvērtu logu, parādīt ikonu izvēļņjoslā." + }, + "enableTray": { + "message": "Iespējot parādīšanu ikonjoslā" + }, + "enableTrayDesc": { + "message": "Vienmēr rādīt ikonu sistēmas joslā." + }, + "startToTray": { + "message": "Sāknēt samazinātu ikonu joslā" + }, + "startToTrayDesc": { + "message": "Kad lietotne tiek sāknēta, rādīt tikai ikonu sistēmas ikonu joslā." + }, + "startToMenuBar": { + "message": "Sāknēt samazinātu izvēļņjoslā" + }, + "startToMenuBarDesc": { + "message": "Kad lietotne tiek sāknēta, attēlot tikai ikonu izvēļņjoslā." + }, + "openAtLogin": { + "message": "Automātiski sāknēt pēc pierakstīšanās" + }, + "openAtLoginDesc": { + "message": "Automātiski sāknēt Bitwarden darbvirsmas lietotni pēc pierakstīšanās." + }, + "alwaysShowDock": { + "message": "Vienmēr rādīt lietotņu joslā" + }, + "alwaysShowDockDesc": { + "message": "Rādīt Bitwarden ikonu lietotņu joslā pat tad, ka notiek samazināšana uz izvēļņjoslu." + }, + "confirmTrayTitle": { + "message": "Apstiprināt parādīšanas ikonjoslā atspējošanu" + }, + "confirmTrayDesc": { + "message": "Šī iestatījuma atspējošana padarīs nepieejamas arī citus ar ikonjoslu saistītus uzstādījumus." + }, + "language": { + "message": "Valoda" + }, + "languageDesc": { + "message": "Mainīt lietotnes valodu. Ir nepieciešama pārsāknēšana." + }, + "theme": { + "message": "Izskats" + }, + "themeDesc": { + "message": "Mainīt lietotnes izskata krāsas." + }, + "dark": { + "message": "Tumšs", + "description": "Dark color" + }, + "light": { + "message": "Gaišs", + "description": "Light color" + }, + "copy": { + "message": "Ievietot starpliktuvē", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Pārbaudīt, vai ir pieejami atjauninājumi" + }, + "version": { + "message": "Laidiens $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Pārsāknēt, lai atjauninātu" + }, + "restartToUpdateDesc": { + "message": "Laidiens $VERSION_NUM$ ir gatavs uzstādīšanai. Ir jāpārsāknē lietotne, lai pabeigtu atjaunināšanu. Vai pārsāknēt un atjaunināt?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Pieejams atjauninājums" + }, + "updateAvailableDesc": { + "message": "Atrasts atjauninājums. Vai lejupielādēt to?" + }, + "restart": { + "message": "Pārsāknēt" + }, + "later": { + "message": "Vēlāk" + }, + "noUpdatesAvailable": { + "message": "Atjauninājumi pašlaik nav pieejami. Tiek izmantots jaunākais laidiens." + }, + "updateError": { + "message": "Atjaunināšanas kļūda" + }, + "unknown": { + "message": "Nezināms" + }, + "copyUsername": { + "message": "Ievietot lietotājvārdu starpliktuvē" + }, + "copyNumber": { + "message": "Ievietot numuru starpliktuvē", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Ievietot drošības kodu starpliktuvē", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium dalība" + }, + "premiumManage": { + "message": "Pārvaldīt dalību" + }, + "premiumManageAlert": { + "message": "Dalību ir iespējams pārvaldīt bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + }, + "premiumRefresh": { + "message": "Atjaunot dalību" + }, + "premiumNotCurrentMember": { + "message": "Tu pašlaik neesi Premium dalībnieks." + }, + "premiumSignUpAndGet": { + "message": "Piesakies Premium dalībai un saņem:" + }, + "premiumSignUpStorage": { + "message": "1 GB šifrētas krātuves datņu pielikumiem." + }, + "premiumSignUpTwoStep": { + "message": "Tādas papildus divpakāpju pierakstīšanās iespējas kā YubiKey, FIDO U2F un Duo." + }, + "premiumSignUpReports": { + "message": "Paroļu higiēnas, kontu veselības un datu pārkāpumu pārskati, lai uzturētu glabātavu drošu." + }, + "premiumSignUpTotp": { + "message": "TOTP apstiprinājuma kodu (2FA) veidotājs piekļuves ierakstiem glabātavā." + }, + "premiumSignUpSupport": { + "message": "Priekšrocīgs lietotāju atbalsts." + }, + "premiumSignUpFuture": { + "message": "Visas nākotnes Premium iespējas. Vairāk drīzumā!" + }, + "premiumPurchase": { + "message": "Iegādāties Premium" + }, + "premiumPurchaseAlert": { + "message": "Premium dalību ir iespējams iegādāties bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + }, + "premiumCurrentMember": { + "message": "Tu esi Premium dalībnieks!" + }, + "premiumCurrentMemberThanks": { + "message": "Paldies, ka atbalsti Bitwarden!" + }, + "premiumPrice": { + "message": "Viss par tikai $PRICE$ gadā!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Atsvaidzināšana pabeigta" + }, + "passwordHistory": { + "message": "Paroles izmaiņu vēsture" + }, + "clear": { + "message": "Notīrīt", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Nav paroļu, ko parādīt." + }, + "undo": { + "message": "Atsaukt" + }, + "redo": { + "message": "Atatsaukt" + }, + "cut": { + "message": "Izgriezt", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Ielīmēt", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Atlasīt visu" + }, + "zoomIn": { + "message": "Pietuvināt" + }, + "zoomOut": { + "message": "Attālināt" + }, + "resetZoom": { + "message": "Atiestatīt tālummaiņu" + }, + "toggleFullScreen": { + "message": "Atvērt pilnekrānu" + }, + "reload": { + "message": "Pārlādēt" + }, + "toggleDevTools": { + "message": "Ieslēgt izstrādātāja rīkus" + }, + "minimize": { + "message": "Samazināt", + "description": "Minimize window" + }, + "zoom": { + "message": "Tālummaiņa" + }, + "bringAllToFront": { + "message": "Novietot visu priekšā", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Par Bitwarden" + }, + "services": { + "message": "Pakalpojumi" + }, + "hideBitwarden": { + "message": "Paslēpt Bitwarden" + }, + "hideOthers": { + "message": "Paslēpt citus" + }, + "showAll": { + "message": "Rādīt visu" + }, + "quitBitwarden": { + "message": "Izslēgt Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ ievietota starpliktuvē", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Palīdzība" + }, + "window": { + "message": "Logs" + }, + "checkPassword": { + "message": "Pārbaudīt, vai parole ir bijusi nopludināta." + }, + "passwordExposed": { + "message": "Šī parole datu pārkāpumos ir atklāta $VALUE$ reizi(es). To vajag mainīt.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Šī parole netika atrasta nevienā no zināmajiem datu pārkāpumiem. Tai vajadzētu būt droši izmantojamai." + }, + "baseDomain": { + "message": "Pamata domēns", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domēna vārds", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Saimniekdators", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Tiešs" + }, + "startsWith": { + "message": "Sākas ar" + }, + "regEx": { + "message": "Regulārā izteiksme", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Atbilstības noteikšana", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Noklusējuma atbilstības noteikšana", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Pārslēgt iespējas" + }, + "organization": { + "message": "Apvienība", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Noklusējums" + }, + "exit": { + "message": "Iziet" + }, + "showHide": { + "message": "Rādīt / paslēpt", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Paslēpt rīkjoslā" + }, + "alwaysOnTop": { + "message": "Vienmēr priekšā", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Atjaunināts", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parole atjaunināta", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Izgūt glabātavas saturu" + }, + "fileFormat": { + "message": "Datnes veids" + }, + "warning": { + "message": "UZMANĪBU", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Apstiprināt glabātavas satura izgūšanu" + }, + "exportWarningDesc": { + "message": "Šī izguve satur glabātavas datus nešifrētā veidā. Izdoto datni nevajadzētu glabāt vai sūtīt nedrošos veidos (piemēram, e-pastā). Izdzēst to uzreiz pēc izmantošanas." + }, + "encExportKeyWarningDesc": { + "message": "Šī izguve šifrē datus ar konta šifrēšanas atslēgu. Ja tā jebkad tiks mainīta, izvadi vajadzētu veikt vēlreiz, jo vairs nebūs iespējams atšifrēt šo datni." + }, + "encExportAccountWarningDesc": { + "message": "Katram Bitwarden kontam ir neatkārtojamas šifrēšanas atslēgas, tādēļ nav iespējams ievietot šifrētu izguvi citā kontā." + }, + "noOrganizationsList": { + "message": "Tu neesi iekļauts nevienā apvienībā. Apvienības sniedz iespēju droši kopīgot vienumus ar citiem lietotājiem." + }, + "noCollectionsInList": { + "message": "Nav krājumu, ko parādīt." + }, + "ownership": { + "message": "Īpašumtiesības" + }, + "whoOwnsThisItem": { + "message": "Kam pieder šis vienums?" + }, + "strong": { + "message": "Spēcīga", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Laba", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Vāja", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Vāja galvenā parole" + }, + "weakMasterPasswordDesc": { + "message": "Izvēlētā galvenā parole ir vāja. Ir ieteicams izmantot spēcīgu galveno paroli (vai paroles vārdu salikumu), lai pienācīgi aizsargātu Bitwarden kontu. Vai tiešām izmanto šo galveno paroli?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Atslēgt ar PIN" + }, + "setYourPinCode": { + "message": "Uzstādi savu PIN kodu Bitwarden atslēgšanai! Tavi PIN iestatījumi tiks atiestatīti, ja Tu pilnībā izrakstīsies no lietotnes." + }, + "pinRequired": { + "message": "Ir nepieciešams PIN kods." + }, + "invalidPin": { + "message": "Nederīgs PIN kods." + }, + "unlockWithWindowsHello": { + "message": "Atslēgt ar Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Apstiprināt Bitwarden." + }, + "unlockWithTouchId": { + "message": "Atslēgt ar Touch ID" + }, + "touchIdConsentMessage": { + "message": "atslēgt glabātavu" + }, + "noAutoPromptWindowsHello": { + "message": "Palaišanas brīdī nevaicāt par Windows Hello." + }, + "noAutoPromptTouchId": { + "message": "Palaišanas brīdī nevaicāt par Touch ID." + }, + "lockWithMasterPassOnRestart": { + "message": "Aizslēgt ar galveno paroli pēc pārsāknēšanas" + }, + "preferences": { + "message": "Uzstādījumi" + }, + "enableMenuBar": { + "message": "Iespējot izvēļņjoslas ikonu" + }, + "enableMenuBarDesc": { + "message": "Vienmēr rādīt ikonu izvēļņjoslā." + }, + "hideToMenuBar": { + "message": "Paslēpt izvēļņjoslā" + }, + "selectOneCollection": { + "message": "Ir jāizvēlas vismaz viens krājums." + }, + "premiumUpdated": { + "message": "Tu esi pārgājis uz Premium." + }, + "restore": { + "message": "Atjaunot" + }, + "premiumManageAlertAppStore": { + "message": "Abonementu ir iespējams pārvaldīt App Store. Vai doties uz App Store?" + }, + "legal": { + "message": "Tiesiskums", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Izmantošanas nosacījumi" + }, + "privacyPolicy": { + "message": "Privātuma nosacījumi" + }, + "unsavedChangesConfirmation": { + "message": "Vai tiešām iziet? Ja Tu aiziesi, tad pašreizējā informācija netiks saglabāta." + }, + "unsavedChangesTitle": { + "message": "Nesaglabātas izmaiņas" + }, + "clone": { + "message": "Pavairot" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Viens vai vairāki apvienības nosacījumi ietekmē veidotāja iestatījumus." + }, + "vaultTimeoutAction": { + "message": "Glabātavas noildzes darbība" + }, + "vaultTimeoutActionLockDesc": { + "message": "Ir nepieciešams atkārtoti ievadīt galveno paroli, lai piekļūt aizslēgtai glabātavai." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Pēc izrakstīšanās no glabātavas ir nepieciešams tai pieslēgties atkārtoti." + }, + "lock": { + "message": "Aizslēgt", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Atkritne", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Meklēt atkritnē" + }, + "permanentlyDeleteItem": { + "message": "Neatgriezeniski izdzēst vienumu" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Vai tiešām neatgriezeniski izdzēst šo vienumu?" + }, + "permanentlyDeletedItem": { + "message": "Vienums neatgriezeniski izdzēsts" + }, + "restoreItem": { + "message": "Atjaunot vienumu" + }, + "restoreItemConfirmation": { + "message": "Vai tiešām atjaunot šo vienumu?" + }, + "restoredItem": { + "message": "Vienums atjaunots" + }, + "permanentlyDelete": { + "message": "Neatgriezeniski izdzēst" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Izrakstīšanās noņems piekļuvi glabātavai un pieprasa tiešsaistes pierakstīšanos pēc noildzes laika. Vai tiešām izmantot šo iestatījumu?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Noildzes darbības apstiprināšana" + }, + "enterpriseSingleSignOn": { + "message": "Uzņēmuma vienotā pierakstīšanās" + }, + "setMasterPassword": { + "message": "Uzstādīt galveno paroli" + }, + "ssoCompleteRegistration": { + "message": "Lai pabeigtu vienotās pieteikšanās uzstādīšanu, ir jānorāda galvenā parole, lai piekļūtu glabātavai un aizsargātu to." + }, + "newMasterPass": { + "message": "Jaunā galvenā parole" + }, + "confirmNewMasterPass": { + "message": "Apstiprināt jauno galveno paroli" + }, + "masterPasswordPolicyInEffect": { + "message": "Vienā vai vairākos apvienības nosacījumos ir norādīts, ka galvenajai parolei ir jāatbilst šādām prasībām:" + }, + "policyInEffectMinComplexity": { + "message": "Mazākais pieļaujamais sarežģītības novērtējums ir $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Mazākais pieļaujamais garums ir $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Satur vienu vai vairākus lielos burtus" + }, + "policyInEffectLowercase": { + "message": "Satur vienu vai vairākus mazos burtus" + }, + "policyInEffectNumbers": { + "message": "Satur vienu vai vairākus ciparus" + }, + "policyInEffectSpecial": { + "message": "Satur vienu vai vairākas no šīm īpašajām rakstzīmēm: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Jaunā galvenā parole neatbilst nosacījumu prasībām." + }, + "acceptPolicies": { + "message": "Atzīmējot šo rūtiņu, Tu piekrīti sekojošajam:" + }, + "acceptPoliciesError": { + "message": "Nav pieņemti izmantošanas nosacījumi un privātuma politika." + }, + "enableBrowserIntegration": { + "message": "Iespējot pārlūka saistīšanu" + }, + "enableBrowserIntegrationDesc": { + "message": "Pārlūka saistīšana tiek izmantota pārlūka biometrijas nodrošināšanai." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Pārlūka saistīšana nav atbalstīta" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Diemžēl pārlūka saistīšana pagaidām ir nodrošināta tikai Mac App Store laidienā." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Pārlūka saistīšana nav atbalstīta" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Diemžēl pārlūka saistīšana pagaidām nav nodrošināta Windows veikala laidienā." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Pieprasīt apstiprinājumu pārlūka saistīšanai" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Iespējo papildus drošības slāni, pieprasot atpazīšanas vārdkopas pārbaudi, kad tiek izveidota saikne starp darbvirsmu un pārlūku. Kad iespējots, ir nepieciešama lietotāja mijiedarbīga un apstiprināšana katru reizi, kad tiek izveidots savienojums." + }, + "approve": { + "message": "Apstiprināt" + }, + "verifyBrowserTitle": { + "message": "Pārbaudīt pārlūka savienojumu" + }, + "verifyBrowserDesc": { + "message": "Lūgums pārliecināties, ka attēlotā atpazīšanas vārdkopa ir tāda pati kā tā, kas ir redzama pārlūka paplašinājumā." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrija nav iespējota" + }, + "biometricsNotEnabledDesc": { + "message": "Vispirms ir nepieciešams iespējot biometriju darbvirsmas iestatījumos, lai to varētu izmantot pārlūkā." + }, + "personalOwnershipSubmitError": { + "message": "Uzņēmuma nosacījumi liedz saglabāt vienumus privātajā glabātavā. Ir jānorāda piederība apvienībai un jāizvēlas kāds no pieejamajiem krājumiem." + }, + "hintEqualsPassword": { + "message": "Paroles norāde nedrīkst būt tāda pati kā parole." + }, + "personalOwnershipPolicyInEffect": { + "message": "Apvienības nosacījumi ietekmē Tavas īpašumtiesību iespējas." + }, + "allSends": { + "message": "Visi \"Send\"", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Datne" + }, + "sendTypeText": { + "message": "Teksts" + }, + "searchSends": { + "message": "Meklēt \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Labot \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mana glabātava" + }, + "text": { + "message": "Teksts" + }, + "deletionDate": { + "message": "Dzēšanas datums" + }, + "deletionDateDesc": { + "message": "\"Send\" tiks pastāvīgi izdzēsts norādītajā dienā un laikā.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Derīguma beigu datums" + }, + "expirationDateDesc": { + "message": "Ja uzstādīts, piekļuve šim \"Send\" beigsies norādītajā dienā un laikā.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Lielākais pieļaujamais piekļuvju skaits" + }, + "maxAccessCountDesc": { + "message": "Ja uzstādīts, lietotāji nevarēs piekļūt šim \"Send\", kad tiks sasniegts lielākais pieļaujamais piekļūšanas reižu skaits.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Pašreizējais piekļuvju skaits" + }, + "disableSend": { + "message": "Atspējot šo \"Send\", lai neviens tam nevarētu piekļūt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Pēc izvēles pieprasīt lietotājiem paroli, lai viņi varētu piekļūt šim \"Send\".", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Personīgās piezīmes par šo \"Send\".", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "\"Send\" saite", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "\"Send\" saite", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Kad piekļūst šim \"Send\", pēc noklusējuma paslēpt saturu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "\"Send\" izveidots", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "\"Send\" labots", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "\"Send\" izdzēsts", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Jauna parole" + }, + "whatTypeOfSend": { + "message": "Kāds veids ir šim \"Send\"?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Izveidot \"Send\"", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Teksts, kuru ir vēlme nosūtīt." + }, + "sendFileDesc": { + "message": "Datne, kuru ir vēlme nosūtīt." + }, + "days": { + "message": "$DAYS$ dienas", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 diena" + }, + "custom": { + "message": "Pielāgots" + }, + "deleteSendConfirmation": { + "message": "Vai tiešām izdzēst šo \"Send\"?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Ievietot \"Send\" saiti starpliktuvē", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Saglabājot ievietot šī \"Send\" saiti starpliktuvē." + }, + "sendDisabled": { + "message": "\"Send\" atspējots", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Uzņēmuma nosacījumu kopas dēļ ir tikai iespējams dzēst esošu \"Send\".", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Ievietot saiti starpliktuvē" + }, + "disabled": { + "message": "Atspējots" + }, + "maxAccessCountReached": { + "message": "Sasniegts lielākais pieļaujamais piekļuvju skaits" + }, + "expired": { + "message": "Beidzies izmantošanas laiks" + }, + "pendingDeletion": { + "message": "Gaida dzēšanu" + }, + "webAuthnAuthenticate": { + "message": "Autentificēt WebAuthn" + }, + "hideEmail": { + "message": "Slēpt e-pasta adresi no saņēmējiem." + }, + "sendOptionsPolicyInEffect": { + "message": "Viens vai vairāki apvienības nosacījumi ietekmē \"Send\" iestatījumus." + }, + "emailVerificationRequired": { + "message": "Nepieciešama e-pasta adreses apstiprināšana" + }, + "emailVerificationRequiredDesc": { + "message": "Ir jāapstiprina e-pasta adrese, lai izmantotu šo iespēju." + }, + "passwordPrompt": { + "message": "Galvenās paroles pārvaicāšana" + }, + "passwordConfirmation": { + "message": "Galvenās paroles apstiprināšana" + }, + "passwordConfirmationDesc": { + "message": "Šī darbība ir aizsargāta. Lai turpinātu, ir jāievada galvenā parole, lai apstiprinātu identitāti." + }, + "updatedMasterPassword": { + "message": "Galvenā parole atjaunināta" + }, + "updateMasterPassword": { + "message": "Atjaunināt galveno paroli" + }, + "updateMasterPasswordWarning": { + "message": "Apvienības pārvaldnieks nesen nomainīja galveno paroli. Lai piekļūtu glabātavai, tā ir jāatjaunina. Turpinot tiks izbeigta pašreizējā sesija un tiks pieprasīta atkārtota pierakstīšanās. Esošās sesijas citās iekārtās var turpināt darboties līdz vienai stundai." + }, + "hours": { + "message": "Stundas" + }, + "minutes": { + "message": "Minūtes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Apvienības nosacījumi ietekmē glabātavas noildzi. Lielākā atļautā glabātavas noildze ir $HOURS$ stunda(s) un $MINUTES$ minūte(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Glabātavas noildze pāŗsniedz apvienības uzstādītos ierobežojumus." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automātiska ievietošana sarakstā" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Šajā apvienībā ir uzņēmuma nosacījums, kas automātiski ievieto lietotājus paroles atiestatīšanas sarakstā. Tas ļauj apvienības pārvaldniekiem mainīt lietotāju galveno paroli." + }, + "vaultExportDisabled": { + "message": "Glabātavas izgūšana ir atspējota" + }, + "personalVaultExportPolicyInEffect": { + "message": "Viens vai vairāki apvienības nosacījumi neļauj izgūt privātās glabātavas saturu." + }, + "addAccount": { + "message": "Pievienot kontu" + }, + "removeMasterPassword": { + "message": "Noņemt galveno paroli" + }, + "removedMasterPassword": { + "message": "Galvenā parole tika noņemta." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ izmanto vienoto pieteikšanos ar pašizvietotu atslēgu serveri. Tās dalībniekiem vairs nav nepieciešama galvenā parole, lai pieslēgtos.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Pamest apvienību" + }, + "leaveOrganizationConfirmation": { + "message": "Vai tiešām pamest šo apvienību?" + }, + "leftOrganization": { + "message": "Apvienība ir pamesta." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nav iespējams sasniegt Key Connector, tāpēc vēlāk jāmēģina atkal." + }, + "lockAllVaults": { + "message": "Aizslēgt visas glabātavas" + }, + "accountLimitReached": { + "message": "Vienlaicīgi var būt pierakstījušies ne vairāk kā 5 konti." + }, + "accountPreferences": { + "message": "Uzstādījumi" + }, + "appPreferences": { + "message": "Lietotnes iestatījumi (visi konti)" + }, + "accountSwitcherLimitReached": { + "message": "Sasniegti konta ierobežojumi. Izrakstīties, lai pievienotu citu." + }, + "settingsTitle": { + "message": "Lietotnes iestatījumi kontam $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Pārslēgties starp kontiem" + }, + "options": { + "message": "Iespējas" + }, + "sessionTimeout": { + "message": "Sesijai iestājās noildze. Lūgums mēģināt pierakstīties vēlreiz." + }, + "exportingPersonalVaultTitle": { + "message": "Izdod personīgo glabātavu" + }, + "exportingPersonalVaultDescription": { + "message": "Tiks izdoti tikai personīgie glabātavas vienumi, kas ir saistīti ar $EMAIL$. Apvienības glabātavas vienumi netiks iekļauti.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Veidotājs" + }, + "whatWouldYouLikeToGenerate": { + "message": "Ko ir nepieciešams izveidot?" + }, + "passwordType": { + "message": "Paroles veids" + }, + "regenerateUsername": { + "message": "Pārizveidot lietotājvārdu" + }, + "generateUsername": { + "message": "Izveidot lietotājvārdu" + }, + "usernameType": { + "message": "Lietotājvārda veids" + }, + "plusAddressedEmail": { + "message": "E-pasta adrese ar plusu" + }, + "plusAddressedEmailDesc": { + "message": "Izmantot e-pasta pakalpojuma nodrošinātāja apakšadresēšanas spējas." + }, + "catchallEmail": { + "message": "Visu tverošā e-pasta adrese" + }, + "catchallEmailDesc": { + "message": "Izmantot uzstādīto domēna visu tverošo iesūtni." + }, + "random": { + "message": "Nejauši" + }, + "randomWord": { + "message": "Nejaušs vārds" + }, + "websiteName": { + "message": "Tīmekļa vietnes nosaukums" + }, + "service": { + "message": "Pakalpojums" + } +} diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json new file mode 100644 index 0000000000..5a73033d19 --- /dev/null +++ b/apps/desktop/src/locales/me/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filteri" + }, + "allItems": { + "message": "Sve stavke" + }, + "favorites": { + "message": "Favoriti" + }, + "types": { + "message": "Tipovi" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeCard": { + "message": "Kartica" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sigurna belješka" + }, + "folders": { + "message": "Fascikle" + }, + "collections": { + "message": "Kolekcije" + }, + "searchVault": { + "message": "Pretraži trezor" + }, + "addItem": { + "message": "Dodaj stavku" + }, + "shared": { + "message": "Podijeljeno" + }, + "share": { + "message": "Podijeli" + }, + "moveToOrganization": { + "message": "Prebaci u Organizaciju" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Izaberite organizaciju u koju želite da premjestite ovu stavku. Prelazak u organizaciju prenosi vlasništvo nad stavkom na tu organizaciju. Nećete više biti direktan vlasnik ove stavke kada bude premještena." + }, + "attachments": { + "message": "Prilog" + }, + "viewItem": { + "message": "Vidi stavku" + }, + "name": { + "message": "Ime" + }, + "uri": { + "message": "Link" + }, + "uriPosition": { + "message": "Link $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Novi link" + }, + "username": { + "message": "Korisničko ime" + }, + "password": { + "message": "Lozinka" + }, + "passphrase": { + "message": "Pristupna fraza" + }, + "editItem": { + "message": "Uredi stavku" + }, + "emailAddress": { + "message": "Email adresa" + }, + "verificationCodeTotp": { + "message": "Verifikacioni kod (TOTP)" + }, + "website": { + "message": "Internet strana" + }, + "notes": { + "message": "Bilješka" + }, + "customFields": { + "message": "Prilagođeno polje" + }, + "launch": { + "message": "Pokreni" + }, + "copyValue": { + "message": "Kopiraj vrijednost", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimizirajte prilikom kopiranja u međuspremnik" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Isključi vidljivost" + }, + "toggleCollapse": { + "message": "Sažmi/Proširi", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Ime vlasnika kartice" + }, + "number": { + "message": "Broj" + }, + "brand": { + "message": "Vrsta kartice" + }, + "expiration": { + "message": "Datum do kada važi kartica" + }, + "securityCode": { + "message": "Siguronosni kod" + }, + "identityName": { + "message": "Ime identiteta" + }, + "company": { + "message": "Kompanija" + }, + "ssn": { + "message": "Broj socijalnog osiguranja" + }, + "passportNumber": { + "message": "Broj pasoša" + }, + "licenseNumber": { + "message": "Broj licence" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresa" + }, + "premiumRequired": { + "message": "Premium obavezan" + }, + "premiumRequiredDesc": { + "message": "Za upotrebu ove funkcije potrebno je premium članstvo." + }, + "errorOccurred": { + "message": "Dogodila se greška." + }, + "error": { + "message": "Greška" + }, + "january": { + "message": "Januar" + }, + "february": { + "message": "Februar" + }, + "march": { + "message": "Mart" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Maj" + }, + "june": { + "message": "Jun" + }, + "july": { + "message": "Jul" + }, + "august": { + "message": "Avgust" + }, + "september": { + "message": "Septembar" + }, + "october": { + "message": "Oktobar" + }, + "november": { + "message": "Novembar" + }, + "december": { + "message": "Decembar" + }, + "ex": { + "message": "Primjer", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Naslov" + }, + "mr": { + "message": "G" + }, + "mrs": { + "message": "Gđa" + }, + "ms": { + "message": "Gđica" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mjesec isticanja" + }, + "expirationYear": { + "message": "Godina isticanja" + }, + "select": { + "message": "Odaberi" + }, + "other": { + "message": "Drugo" + }, + "generatePassword": { + "message": "Generiši lozinku" + }, + "type": { + "message": "Tip" + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje ime" + }, + "lastName": { + "message": "Prezime" + }, + "fullName": { + "message": "Puno ime" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Grad" + }, + "stateProvince": { + "message": "Država/Provincija" + }, + "zipPostalCode": { + "message": "Poštanski kod" + }, + "country": { + "message": "Država" + }, + "save": { + "message": "Sačuvaj" + }, + "cancel": { + "message": "Poništi" + }, + "delete": { + "message": "Obriši" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Uredi" + }, + "authenticatorKeyTotp": { + "message": "Autentifikacioni ključ (TOTP)" + }, + "folder": { + "message": "Fascikla" + }, + "newCustomField": { + "message": "Novo prilagođeno polje" + }, + "value": { + "message": "Vrijednost" + }, + "dragToSort": { + "message": "Prevucite za sortiranje" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Sakriveno" + }, + "cfTypeBoolean": { + "message": "Binarna promjenljiva" + }, + "cfTypeLinked": { + "message": "Povezan", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Povezana vrijednost", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Ukloni" + }, + "nameRequired": { + "message": "Potrebno je ime." + }, + "addedItem": { + "message": "Dodata stavka" + }, + "editedItem": { + "message": "Uređena stavka" + }, + "deleteItem": { + "message": "Obriši stavku" + }, + "deleteFolder": { + "message": "Obriši fasciklu" + }, + "deleteAttachment": { + "message": "Obriši prilog" + }, + "deleteItemConfirmation": { + "message": "Jeste li sigurni da želite da izbrišete ovu stavku?" + }, + "deletedItem": { + "message": "Obrisana stavka" + }, + "overwritePasswordConfirmation": { + "message": "Jeste li sigurni da želite da zamijenite trenutnu lozinku?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Nema fascikle", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj fasciklu" + }, + "editFolder": { + "message": "Uredi fasciklu" + }, + "regeneratePassword": { + "message": "Regereniši lozinku" + }, + "copyPassword": { + "message": "Kopiraj lozinku" + }, + "copyUri": { + "message": "Kopiraj link" + }, + "copyVerificationCodeTotp": { + "message": "Iskopiraj Verifikacioni Kod (TOTP)" + }, + "length": { + "message": "Dužina" + }, + "numWords": { + "message": "Broj riječi" + }, + "wordSeparator": { + "message": "Separator riječi" + }, + "capitalize": { + "message": "Velika slova", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Uključi broj" + }, + "close": { + "message": "Zatvori" + }, + "minNumbers": { + "message": "Minimum brojeva" + }, + "minSpecial": { + "message": "Minimum specijalnih", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izbjegni dvosmislene karaktere" + }, + "searchCollection": { + "message": "Pretraži kolekciju" + }, + "searchFolder": { + "message": "Pretraži fasciklu" + }, + "searchFavorites": { + "message": "Pretraži favorite" + }, + "searchType": { + "message": "Pretraži tip", + "description": "Search item type" + }, + "newAttachment": { + "message": "Dodaj novi prilog" + }, + "deletedAttachment": { + "message": "Obrisani prilog" + }, + "deleteAttachmentConfirmation": { + "message": "Da li ste sigurni da želite da obrišete ovaj prilog?" + }, + "attachmentSaved": { + "message": "Prilog je sačuvan." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Izaberi datoteku." + }, + "maxFileSize": { + "message": "Maximalna veličina datoteke je 500 MB." + }, + "updateKey": { + "message": "Ovu funkciju ne možete da koristite dok ne ažurirate ključ za šifrovanje." + }, + "editedFolder": { + "message": "Izmijenjena fascikla" + }, + "addedFolder": { + "message": "Dodata fascikla" + }, + "deleteFolderConfirmation": { + "message": "Jeste li sigurni da želite da izbrišete ovu fasciklu?" + }, + "deletedFolder": { + "message": "Obrisana fascikla" + }, + "loginOrCreateNewAccount": { + "message": "Prijavite se ili otvorite novi nalog da biste pristupili svom sigurnom trezoru." + }, + "createAccount": { + "message": "Kreiraj nalog" + }, + "logIn": { + "message": "Prijavi se" + }, + "submit": { + "message": "Podnesi" + }, + "masterPass": { + "message": "Glavna lozinka" + }, + "masterPassDesc": { + "message": "Glavna lozinka je lozinka koju koristite za pristup trezoru. Veoma je važno da ne zaboravite svoju glavnu lozinku. Nema načina da povratite lozinku u slučaju da je zaboravite." + }, + "masterPassHintDesc": { + "message": "Podsjetnik na glavnu lozinku vam može pomoći da zapamtite lozinku ako je zaboravite." + }, + "reTypeMasterPass": { + "message": "Prekucaj glavnu lozinku" + }, + "masterPassHint": { + "message": "Podsjetnik glavne lozinke (opcija)" + }, + "settings": { + "message": "Podešavanja" + }, + "passwordHint": { + "message": "Podsjetnik na lozinku" + }, + "enterEmailToGetHint": { + "message": "Unesi email svog naloga kako bi ste primili podsjetnik na glavnu lozinku." + }, + "getMasterPasswordHint": { + "message": "Podsjetnik na glavnu lozinku" + }, + "emailRequired": { + "message": "Potrebna je email adresa." + }, + "invalidEmail": { + "message": "Nepravilna email adresa." + }, + "masterPassRequired": { + "message": "Potrebna je glavna lozinka." + }, + "masterPassLength": { + "message": "Glavna lozinka mora imati najmanje 8 karaktera." + }, + "masterPassDoesntMatch": { + "message": "Potvrda glavne lozinke ne odgovara." + }, + "newAccountCreated": { + "message": "Vaš novi nalog je kreiran! Sada se možete prijaviti." + }, + "masterPassSent": { + "message": "Poslali smo vam email sa podsjetnikom na glavnu lozinku." + }, + "unexpectedError": { + "message": "Došlo je do neočekivane greške." + }, + "itemInformation": { + "message": "Informacija o stavki" + }, + "noItemsInList": { + "message": "Nema stavki u listi." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verifikacioni kod (TOTP)" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Potreban je verifikacioni kod." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Nastavi" + }, + "enterVerificationCodeApp": { + "message": "Unesi kod sa 6 cifri iz vaše aplikacije za autentifikaciju." + }, + "enterVerificationCodeEmail": { + "message": "Unesi kod sa 6 cifri koji vam je poslat na email $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verifikacioni email poslat na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamti me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Pošalji ponovo verifikacioni kod na email" + }, + "useAnotherTwoStepMethod": { + "message": "Koristi drugi metod prijave u dva koraka" + }, + "insertYubiKey": { + "message": "Priključi svoj YubiKey u USB port na kompjuteru i onda takni njegovo dugme." + }, + "insertU2f": { + "message": "Priključi svoj sigurnonosni ključ u USB port na kompjuteru. Ako ima dugme, takni ga." + }, + "recoveryCodeDesc": { + "message": "Izgubili ste pristup svim dobavljačima prijave u dva koraka? Upotrijebite sigurnonosni kod kako biste onemogućili sve prijave u dva koraka na vaš račun." + }, + "recoveryCodeTitle": { + "message": "Sigurnosni kod" + }, + "authenticatorAppTitle": { + "message": "Aplikacija za autentifikaciju" + }, + "authenticatorAppDesc": { + "message": "Koristi aplikaciju za autentifkaciju (kao što su Authy ili Google autentificator) da generišeš verfikacione kodove bazirane na vremenu.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP siguronosni ključ" + }, + "yubiKeyDesc": { + "message": "Koristi YubiKey da pristupis svom nalogu. Radi sa YubiKey 4, 4 Nano, 4C i NEO uređajima." + }, + "duoDesc": { + "message": "Potvrdite sa Duo Security, korišćenjem Duo Mobile aplikacije, SMS-a, telefonskog poziva ili U2F sigurnosnog ključa.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Potvrdite sa Duo Security za svoju organizaciju pomoću aplikacije Duo Mobile, SMS-a, telefonskog poziva ili U2F sigurnosnog ključa.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Koristite bilo koji bezbjedonosni ključ za koji je omogućen WebAuthn da biste pristupili svom nalogu." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verifikacioni kodovi će vam biti poslati na email adresu." + }, + "loginUnavailable": { + "message": "Prijava nije dostupna" + }, + "noTwoStepProviders": { + "message": "Na ovom nalogu je omogućena prijava u dva koraka, međutim, ovaj uređaj ne podržava nijednog od konfigurisanih dobavljača u dva koraka." + }, + "noTwoStepProviders2": { + "message": "Dodajte dodatne dobavljače koji su bolje podržani na svim uređajima (poput aplikacije za autentifikaciju)." + }, + "twoStepOptions": { + "message": "Opcije prijave u dva koraka" + }, + "selfHostedEnvironment": { + "message": "Okruženje lokalne instalacije (SELF HOST)" + }, + "selfHostedEnvironmentFooter": { + "message": "Navedite osnovni URL vaše lokalne instalacije (HOST) Bitwardena." + }, + "customEnvironment": { + "message": "Prilagođeno okruženje" + }, + "customEnvironmentFooter": { + "message": "Za napredne korisnike. Možete odrediti osnovni URL svake usluge nezavisno." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API server URL" + }, + "webVaultUrl": { + "message": "URL trezora na internetu" + }, + "identityUrl": { + "message": "URL servera indentifikacije" + }, + "notificationsUrl": { + "message": "URL servera obavještenja" + }, + "iconsUrl": { + "message": "URL servera ikonica" + }, + "environmentSaved": { + "message": "URL-ovi okruženja su sačuvani." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "overwritePassword": { + "message": "Zamijeni lozinku" + }, + "learnMore": { + "message": "Saznaj više" + }, + "featureUnavailable": { + "message": "Funkcija nije dostupna" + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Vaša sesija je istekla." + }, + "logOutConfirmation": { + "message": "Jeste li sigurni da se želite odjaviti?" + }, + "logOut": { + "message": "Odjavi se" + }, + "addNewLogin": { + "message": "Dodaj novu prijavu" + }, + "addNewItem": { + "message": "Dodaj novu stavku" + }, + "addNewFolder": { + "message": "Dodaj novu fasciklu" + }, + "view": { + "message": "Pogled" + }, + "account": { + "message": "Nalog" + }, + "loading": { + "message": "Učitavanje..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Generator lozinki" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Pošaljite izvještaj o grešci" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Prati nas" + }, + "syncVault": { + "message": "Sinhronizacija trezora" + }, + "changeMasterPass": { + "message": "Promjena glavne lozinke" + }, + "changeMasterPasswordConfirmation": { + "message": "Možete promijeniti svoju glavnu lozinku u trezoru na internet strani bitwarden.com. Da li želite da posjetite internet lokaciju sada?" + }, + "fingerprintPhrase": { + "message": "Fraza računa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Jedinstvena fraza vašeg računa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Idi na internet stranu trezora" + }, + "getMobileApp": { + "message": "Preuzmi mobilnu aplikaciju" + }, + "getBrowserExtension": { + "message": "Preuzmi ekstenziju za pretraživač" + }, + "syncingComplete": { + "message": "Završena sinhronizacija" + }, + "syncingFailed": { + "message": "Sinhronizacija nije uspjela" + }, + "yourVaultIsLocked": { + "message": "Vaš trezor je zaključan. Verifikuj svoju glavnu lozinku za nastavak." + }, + "unlock": { + "message": "Otključaj" + }, + "loggedInAsOn": { + "message": "Prijavljen kao $EMAIL$ na $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Nevažeća glavna lozinka" + }, + "twoStepLoginConfirmation": { + "message": "Prijavljivanje u dva koraka čini vaš nalog sigurnijim tako što ćete morati da verifikujete prijavu na drugom uređaju, kao što su bezbjedonosni ključ, aplikacija za potvrđivanje, SMS, telefonski poziv ili e-pošta. Prijava u dva koraka može se omogućiti u trezoru na internet strani bitwarden.com. Da li želite da posjetite internet lokaciju sada?" + }, + "twoStepLogin": { + "message": "Prijava u dva koraka" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Odmah" + }, + "tenSeconds": { + "message": "10 sekundi" + }, + "twentySeconds": { + "message": "20 sekundi" + }, + "thirtySeconds": { + "message": "30 sekundi" + }, + "oneMinute": { + "message": "1 Minut" + }, + "twoMinutes": { + "message": "2 Minuta" + }, + "fiveMinutes": { + "message": "5 Minuta" + }, + "fifteenMinutes": { + "message": "15 Minuta" + }, + "thirtyMinutes": { + "message": "30 Minuta" + }, + "oneHour": { + "message": "1 Sat" + }, + "fourHours": { + "message": "4 Sata" + }, + "onIdle": { + "message": "Kada je sistem neaktivan" + }, + "onSleep": { + "message": "Kada je sistem u hibernaciji" + }, + "onLocked": { + "message": "Kada je sistem zaključan" + }, + "onRestart": { + "message": "Na restart" + }, + "never": { + "message": "Nikada" + }, + "security": { + "message": "Bezbjednost" + }, + "clearClipboard": { + "message": "Obrisati međuspremnik", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatsko brisanje kopiranih vrijednosti iz vašeg međuspremnika.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Onesposobi ikone internet strane" + }, + "disableFaviconDesc": { + "message": "Ikone internet strane omogućavaju prepoznatljivu sliku pored svake stavke za prijavu u vašem trezoru." + }, + "enableMinToTray": { + "message": "MInimiziraj u sistemsku traku" + }, + "enableMinToTrayDesc": { + "message": "Kada se minimizira prozor, prikaži ikonu u sistemskoj traci." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Zatvori u sistemsku traku" + }, + "enableCloseToTrayDesc": { + "message": "Kada se zatvori prozor, prikaži ikonu u sistemskoj traci." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Omogući sistemsku traku" + }, + "enableTrayDesc": { + "message": "Uvijek prikaži ikonu u sistemskoj traci." + }, + "startToTray": { + "message": "Pokreni samo ikonu sistemske trake" + }, + "startToTrayDesc": { + "message": "Kada se aplikacija prvi put pokrene, prikaži samo ikonu u sistemskoj traci." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Promijenite jezik koji koristi aplikacija. Potrebno je ponovno pokretanje." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Promijenite boju teme aplikacije." + }, + "dark": { + "message": "Tamna", + "description": "Dark color" + }, + "light": { + "message": "Svijetla", + "description": "Light color" + }, + "copy": { + "message": "Kopiraj", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Provjeri ažuriranje" + }, + "version": { + "message": "Verzija $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Ponovo pokreni za ažuriranje" + }, + "restartToUpdateDesc": { + "message": "Verzija $VERSION_NUM$ je spremna za instaliranje. Da biste dovršili instalaciju, morate ponovo pokrenuti aplikaciju. Da li želite da ponovo pokrenete i ažurirate?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Dostupna su ažuriranja" + }, + "updateAvailableDesc": { + "message": "Pronađeno je ažuriranje. Želite li ga preuzeti sada?" + }, + "restart": { + "message": "Ponovno pokretanje" + }, + "later": { + "message": "Kasnije" + }, + "noUpdatesAvailable": { + "message": "Trenutno nema dostupnih ažuriranja. Koristite najnoviju verziju." + }, + "updateError": { + "message": "Ažuriraj grešku" + }, + "unknown": { + "message": "Nepoznat" + }, + "copyUsername": { + "message": "Kopiraj korisnički nalog" + }, + "copyNumber": { + "message": "Kopiraj broj", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiraj siguronosni kod", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premijum članstvo" + }, + "premiumManage": { + "message": "Upravljanje članstvom" + }, + "premiumManageAlert": { + "message": "Svojim članstvom možete upravljati na trezoru u sklopu internet strane bitwarden.com. Da li želite da posjetite internet lokaciju sada?" + }, + "premiumRefresh": { + "message": "Osvježi članstvo" + }, + "premiumNotCurrentMember": { + "message": "Trenutno nijeste premijum član." + }, + "premiumSignUpAndGet": { + "message": "Prijavite se za premijum članstvo i dobijte:" + }, + "premiumSignUpStorage": { + "message": "1 GB šifrovanog skladišta za priloge datoteka." + }, + "premiumSignUpTwoStep": { + "message": "Dodatne opcije prijave u dva koraka kao što su YubiKey, FIDO U2F i Duo." + }, + "premiumSignUpReports": { + "message": "Higijena lozinke, zdravlje računa i podaci o krađi podataka kako bi trezor bio siguran." + }, + "premiumSignUpTotp": { + "message": "Generator TOTP verifikacionog koda (2FA) za prijavu u vaš trezor." + }, + "premiumSignUpSupport": { + "message": "Prioritetna korisnička podrška." + }, + "premiumSignUpFuture": { + "message": "Sve buduće premijum karakteristike. Više uskoro!" + }, + "premiumPurchase": { + "message": "Kupi Premijum članstvo" + }, + "premiumPurchaseAlert": { + "message": "Premium članstvo možete kupiti u trezoru na internet strani bitwarden.com. Da li želite da posjetite internet lokaciju sada?" + }, + "premiumCurrentMember": { + "message": "Vi ste premijum član!" + }, + "premiumCurrentMemberThanks": { + "message": "Hvala vam što podržavate Bitwarden." + }, + "premiumPrice": { + "message": "Sve za $PRICE$ /godišnje!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Osvježavanje završeno" + }, + "passwordHistory": { + "message": "Istorija lozinki" + }, + "clear": { + "message": "Očisti", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Nema lozinki za prikazivanje." + }, + "undo": { + "message": "Poništi" + }, + "redo": { + "message": "Vrati" + }, + "cut": { + "message": "Izreži", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Zalijepi", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Izaberi sve" + }, + "zoomIn": { + "message": "Uveličati" + }, + "zoomOut": { + "message": "Umanjiti" + }, + "resetZoom": { + "message": "Reset povećavanja" + }, + "toggleFullScreen": { + "message": "Uključi/isključi prikaz preko cijelog ekrana" + }, + "reload": { + "message": "Osvježi" + }, + "toggleDevTools": { + "message": "Uključivanje/Isključivanje razvojnih alata" + }, + "minimize": { + "message": "Minimiziraj", + "description": "Minimize window" + }, + "zoom": { + "message": "Povećavanje" + }, + "bringAllToFront": { + "message": "Prikaži sve", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "O Bitwardenu" + }, + "services": { + "message": "Servisi" + }, + "hideBitwarden": { + "message": "Sakrij Bitwarden" + }, + "hideOthers": { + "message": "Sakrij ostale" + }, + "showAll": { + "message": "Pokaži sve" + }, + "quitBitwarden": { + "message": "Napusti Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ kopiran", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Pomoć" + }, + "window": { + "message": "Prozor" + }, + "checkPassword": { + "message": "Provjerite da li je lozinka izložena." + }, + "passwordExposed": { + "message": "Ova lozinka je izložena kradji podataka $VALUE$ put(a). Trebalo bi da je promijenite.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Ova lozinka nije pronađena ni u jednoj poznatoj krađi podataka. Trebala bi biti sigurna za upotrebu." + }, + "baseDomain": { + "message": "Osnovni domen", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Lokalna instalacija (HOST)", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Tačan" + }, + "startsWith": { + "message": "Počinje sa" + }, + "regEx": { + "message": "Uobičajeni izraz", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Otkrivanje podudaranja", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Zadato otkrivanje podudaranja", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Uključi/Isključi opcije" + }, + "organization": { + "message": "Organizacija", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Zadato" + }, + "exit": { + "message": "Izađi" + }, + "showHide": { + "message": "Prikaži/Sakrij", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Sakrij u sistemskoj traci" + }, + "alwaysOnTop": { + "message": "Uvijek na vrhu", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Ažurirano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lozinka ažurirana", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Izvezi trezor" + }, + "fileFormat": { + "message": "Format datoteke" + }, + "warning": { + "message": "UPOZORENJE", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "Ovaj izvoz sadrži vaše podatke o trezoru u nešifrovanom formatu. Izvezenu datoteku ne treba da čuvate ili šaljete preko nesigurnih kanala (kao što je e-pošta). Izbrišite ga odmah nakon što završite sa upotrebom." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "Ne pripadate nijednoj organizaciji. Organizacije vam omogućavaju da bezbjedno dijelite stavke sa drugim korisnicima." + }, + "noCollectionsInList": { + "message": "Ne postoje kolekcije u listi." + }, + "ownership": { + "message": "Vlasništvo" + }, + "whoOwnsThisItem": { + "message": "Ko je vlasnik ove stavke?" + }, + "strong": { + "message": "Jaka", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobar", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Slaba", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Slaba glavna lozinka" + }, + "weakMasterPasswordDesc": { + "message": "Glavna lozinka koju ste odabrali je slaba. Trebate koristiti jaku glavnu lozinku (ili pristupnu frazu) da biste pravilno zaštitili svoj Bitwarden nalog. Jeste li sigurni da želite da koristite ovu glavnu lozinku?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Otključaj sa PINom" + }, + "setYourPinCode": { + "message": "Podesite svoj PIN kod za otključavanje Bitwarden-a. Podešavanja PIN-a će se resetovati ako se ikada u potpunosti odjavite iz aplikacije." + }, + "pinRequired": { + "message": "Potreban je PIN kod." + }, + "invalidPin": { + "message": "Nevažeći PIN kod." + }, + "unlockWithWindowsHello": { + "message": "Otključaj sa Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verifikuj za Bitwarden." + }, + "unlockWithTouchId": { + "message": "Otključaj sa Touch ID" + }, + "touchIdConsentMessage": { + "message": "Verifikuj za Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Zaključajte glavnom lozinkom pri ponovnom pokretanju" + }, + "preferences": { + "message": "Podešavanja" + }, + "enableMenuBar": { + "message": "Omogući ikonu trake menija" + }, + "enableMenuBarDesc": { + "message": "Uvijek prikaži ikonu trake menija." + }, + "hideToMenuBar": { + "message": "Sakrij u traci menija" + }, + "selectOneCollection": { + "message": "Morate izabrati barem jednu kolekciju." + }, + "premiumUpdated": { + "message": "Nadogradili ste na premijum." + }, + "restore": { + "message": "Vrati" + }, + "premiumManageAlertAppStore": { + "message": "Pretplatom možete da upravljate iz App Store-a. Da li želite da posjetite App Store sada?" + }, + "legal": { + "message": "Pravne informacije", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Uslovi korišćenja" + }, + "privacyPolicy": { + "message": "Pravila o privatnosti" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Klon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedno ili više pravila organizacije utiču na podešavanje vašeg generatora." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "Označavanjem ovog polja pristajete na sledeće:" + }, + "acceptPoliciesError": { + "message": "Uslovi usluge i Politika privatnosti nisu prihvaćeni." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json new file mode 100644 index 0000000000..4e2fe8f964 --- /dev/null +++ b/apps/desktop/src/locales/ml/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "ഫിൽറ്ററുകൾ" + }, + "allItems": { + "message": "എല്ലാ ഇനങ്ങൾ" + }, + "favorites": { + "message": "പ്രിയങ്കരങ്ങള്‍" + }, + "types": { + "message": "തരങ്ങൾ" + }, + "typeLogin": { + "message": "പ്രവേശനം" + }, + "typeCard": { + "message": "കാർഡ്" + }, + "typeIdentity": { + "message": "തിരിച്ചറിയൽ" + }, + "typeSecureNote": { + "message": "സുരക്ഷിത കുറിപ്പ്" + }, + "folders": { + "message": "ഫോൾഡറുകൾ" + }, + "collections": { + "message": "കളക്ഷൻസ്" + }, + "searchVault": { + "message": "വാൾട് തിരയുക" + }, + "addItem": { + "message": "ഇനം ചേർക്കുക" + }, + "shared": { + "message": "പങ്കിട്ടവ" + }, + "share": { + "message": "പങ്കിടുക" + }, + "moveToOrganization": { + "message": "സംഘടനയിലേക്ക് മാറുക" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$-യിലേക്ക് മാറ്റി", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "അറ്റാച്ചുമെന്റുകൾ" + }, + "viewItem": { + "message": "ഇനം കാണുക" + }, + "name": { + "message": "പേര്" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "പുതിയ URI" + }, + "username": { + "message": "ഉപയോക്തൃനാമം" + }, + "password": { + "message": "പാസ്‌വേഡ്" + }, + "passphrase": { + "message": "രഹസ്യ വാചകം" + }, + "editItem": { + "message": "ഇനം എഡിറ്റുചെയ്യുക" + }, + "emailAddress": { + "message": "ഇ-മെയിൽ വിലാസം" + }, + "verificationCodeTotp": { + "message": "സ്ഥിരീകരണ കോഡ് (TOTP)" + }, + "website": { + "message": "വെബ്സൈറ്റ്" + }, + "notes": { + "message": "കുറിപ്പുകൾ" + }, + "customFields": { + "message": "ഇഷ്‌ടാനുസൃത ഫീൽഡുകൾ" + }, + "launch": { + "message": "തുറക്കുക" + }, + "copyValue": { + "message": "മൂല്യം പകർത്തുക", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുമ്പോൾ ചെറുതാക്കുക" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "ക്ലിപ്പ്ബോർഡിലേക്ക് ഒരു ഇനത്തിന്റെ ഡാറ്റ പകർത്തുമ്പോൾ ചെറുതാക്കുക." + }, + "toggleVisibility": { + "message": "ദൃശ്യപരത ടോഗിൾ ചെയ്യുക" + }, + "toggleCollapse": { + "message": "ചുരുക്കുക", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "കാർഡ് ഉടമയുടെ പേര്" + }, + "number": { + "message": "നമ്പർ" + }, + "brand": { + "message": "ബ്രാൻഡ്" + }, + "expiration": { + "message": "കാലഹരണപ്പെടൽ" + }, + "securityCode": { + "message": "സുരക്ഷാ കോഡ് സിവി‌വി" + }, + "identityName": { + "message": "തിരിച്ചറിയലിൻ്റെ പേര്" + }, + "company": { + "message": "കമ്പനി" + }, + "ssn": { + "message": "സാമൂഹിക സുരക്ഷാ നമ്പർ" + }, + "passportNumber": { + "message": "പാസ്പോർട്ട് നമ്പർ" + }, + "licenseNumber": { + "message": "ലൈസൻസ് നമ്പർ" + }, + "email": { + "message": "ഇമെയിൽ" + }, + "phone": { + "message": "ഫോൺ" + }, + "address": { + "message": "മേൽവിലാസം" + }, + "premiumRequired": { + "message": "പ്രീമിയം അംഗത്വം ആവശ്യമാണ്" + }, + "premiumRequiredDesc": { + "message": "ഈ സവിശേഷത ഉപയോഗിക്കുന്നതിന് പ്രീമിയം അംഗത്വം ആവശ്യമാണ്." + }, + "errorOccurred": { + "message": "ഒരു പിഴവ് സംഭവിച്ചിരിക്കുന്നു." + }, + "error": { + "message": "പിശക്" + }, + "january": { + "message": "ജനുവരി" + }, + "february": { + "message": "ഫെബ്രുവരി" + }, + "march": { + "message": "മാർച്ച്‌" + }, + "april": { + "message": "ഏപ്രിൽ" + }, + "may": { + "message": "മെയ്‌" + }, + "june": { + "message": "ജൂണ്‍" + }, + "july": { + "message": "ജൂലൈ" + }, + "august": { + "message": "ഓഗസ്റ്റ്" + }, + "september": { + "message": "സെപ്റ്റംബർ" + }, + "october": { + "message": "ഒക്ടോബര്‍" + }, + "november": { + "message": "നവംബർ" + }, + "december": { + "message": "ഡിസംബർ" + }, + "ex": { + "message": "ഉദാഹരണം.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "ശീർഷകം" + }, + "mr": { + "message": "ശ്രീ" + }, + "mrs": { + "message": "ശ്രിമതി" + }, + "ms": { + "message": "കുമാരി" + }, + "dr": { + "message": "ഡോ" + }, + "expirationMonth": { + "message": "കാലാവതി കഴിയുന്ന മാസം" + }, + "expirationYear": { + "message": "കാലാവതി കഴിയുന്ന വർഷം" + }, + "select": { + "message": "തിരഞ്ഞെടുക്കുക" + }, + "other": { + "message": "മറ്റുള്ളവ" + }, + "generatePassword": { + "message": "പാസ്‌വേഡ് സൃഷ്ടിക്കുക" + }, + "type": { + "message": "തരം" + }, + "firstName": { + "message": "പേരിന്റെ ആദ്യഭാഗം" + }, + "middleName": { + "message": "മധ്യ നാമം" + }, + "lastName": { + "message": "പേരിന്റെ അവസാന ഭാഗം" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "മേൽവിലാസം 1" + }, + "address2": { + "message": "മേൽവിലാസം 2" + }, + "address3": { + "message": "മേൽവിലാസം 3" + }, + "cityTown": { + "message": "നഗരം / പട്ടണം" + }, + "stateProvince": { + "message": "സംസ്ഥാനം/ ദേശം" + }, + "zipPostalCode": { + "message": "പിൻകോഡ്" + }, + "country": { + "message": "രാജ്യം" + }, + "save": { + "message": "സംരക്ഷിക്കുക" + }, + "cancel": { + "message": "റദ്ദാക്കുക" + }, + "delete": { + "message": "നീക്കംചെയ്യുക" + }, + "favorite": { + "message": "പ്രിയങ്കരം" + }, + "edit": { + "message": "തിരുത്തുക" + }, + "authenticatorKeyTotp": { + "message": "ഓതന്റിക്കേറ്റർ കീ (TOTP)" + }, + "folder": { + "message": "ഫോൾഡർ" + }, + "newCustomField": { + "message": "പുതിയ ഇഷ്‌ടാനുസൃത ഫീൽഡ്" + }, + "value": { + "message": "മൂല്യം" + }, + "dragToSort": { + "message": "അടുക്കാൻ വലിച്ചിടുക" + }, + "cfTypeText": { + "message": "വാചകം" + }, + "cfTypeHidden": { + "message": "മറച്ചത്" + }, + "cfTypeBoolean": { + "message": "ബൂളിയൻ" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "നീക്കംചെയ്യുക" + }, + "nameRequired": { + "message": "പേര് നിർബന്ധമാണ്‌." + }, + "addedItem": { + "message": "ചേർക്കപ്പെട്ട ഇനം" + }, + "editedItem": { + "message": "ഇനം തിരുത്തി" + }, + "deleteItem": { + "message": "ഇനം ഇല്ലാതാക്കുക" + }, + "deleteFolder": { + "message": "ഫോൾഡർ ഇല്ലാതാക്കുക" + }, + "deleteAttachment": { + "message": "അറ്റാച്ചുമെന്റ് ഇല്ലാതാക്കുക" + }, + "deleteItemConfirmation": { + "message": "ഈ ഇനം ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedItem": { + "message": "ഇനം ട്രാഷിലേക്ക് അയച്ചു" + }, + "overwritePasswordConfirmation": { + "message": "നിലവിലെ പാസ്‌വേഡ് പുനരാലേഖനം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "ഫോൾഡർ ഇല്ല", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "ഫോൾഡർ ചേർക്കുക" + }, + "editFolder": { + "message": "ഫോൾഡർ തിരുത്തുക" + }, + "regeneratePassword": { + "message": "പാസ്സ്‌വേഡ് വീണ്ടും സൃഷ്ടിക്കുക" + }, + "copyPassword": { + "message": "പാസ്‌വേഡ് പകർത്തുക" + }, + "copyUri": { + "message": "URL പകർത്തുക" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "ദൈര്‍ഘ്യം" + }, + "numWords": { + "message": "വാക്കുകളുടെ എണ്ണം" + }, + "wordSeparator": { + "message": "വേര്‍പെടുത്തുക" + }, + "capitalize": { + "message": "വലിയഅക്ഷരമാകുക", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "നമ്പർ ഉൾപ്പെടുത്തുക" + }, + "close": { + "message": "അടയ്ക്കുക" + }, + "minNumbers": { + "message": "കുറഞ്ഞ സംഖ്യകൾ" + }, + "minSpecial": { + "message": "കുറഞ്ഞ പ്രത്യേക പ്രതീകങ്ങൾ", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "അവ്യക്തമായ പ്രതീകങ്ങൾ ഒഴിവാക്കുക" + }, + "searchCollection": { + "message": "കളക്ഷൻസ് തിരയുക" + }, + "searchFolder": { + "message": "ഫോൾഡറുകൾ തിരയുക" + }, + "searchFavorites": { + "message": "പ്രിയങ്കരങ്ങൾ തിരയുക" + }, + "searchType": { + "message": "തരം തിരയുക", + "description": "Search item type" + }, + "newAttachment": { + "message": "പുതിയ അറ്റാച്ചുമെന്റ് ചേർക്കുക" + }, + "deletedAttachment": { + "message": "മായ്ച്ച അറ്റാച്ചുമെന്റ്" + }, + "deleteAttachmentConfirmation": { + "message": "ഈ അറ്റാച്ചുമെന്റ് ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "attachmentSaved": { + "message": "ഈ അറ്റാച്ചുമെന്റ് സംരക്ഷിച്ചു." + }, + "file": { + "message": "ഫയൽ" + }, + "selectFile": { + "message": "ഫയൽ തിരഞ്ഞെടുക്കുക." + }, + "maxFileSize": { + "message": "പരമാവധി ഫയൽ വലുപ്പം 500 MB ആണ്." + }, + "updateKey": { + "message": "നിങ്ങളുടെ എൻ‌ക്രിപ്ഷൻ കീ അപ്‌ഡേറ്റ് ചെയ്യുന്നതുവരെ നിങ്ങൾക്ക് ഈ സവിശേഷത ഉപയോഗിക്കാൻ കഴിയില്ല." + }, + "editedFolder": { + "message": "ഫോൾഡർ തിരുത്തി" + }, + "addedFolder": { + "message": "ചേർക്കപ്പെട്ട ഫോൾഡർ" + }, + "deleteFolderConfirmation": { + "message": "ഈ ഫോൾഡർ ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "deletedFolder": { + "message": "ഇല്ലാതാക്കിയ ഫോൾഡർ" + }, + "loginOrCreateNewAccount": { + "message": "നിങ്ങളുടെ സുരക്ഷിത വാൾട്ടിലേക്ക് പ്രവേശിക്കാൻ ലോഗിൻ ചെയ്യുക അല്ലെങ്കിൽ ഒരു പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക." + }, + "createAccount": { + "message": "അക്കൗണ്ട് സൃഷ്ടിക്കുക" + }, + "logIn": { + "message": "പ്രവേശിക്കുക" + }, + "submit": { + "message": "സമർപ്പിക്കുക" + }, + "masterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ്" + }, + "masterPassDesc": { + "message": "നിങ്ങളുടെ വാൾട്ടിലേക്ക് പ്രവേശിക്കാൻ ഉപയോഗിക്കുന്ന പാസ്‌വേഡാണ് പ്രാഥമിക പാസ്‌വേഡ്. പ്രാഥമിക പാസ്‌വേഡ് നിങ്ങൾ ഒരു കാരണവശാലും മറക്കരുത്. നിങ്ങൾ പാസ്‌വേഡ് മറന്നാൽ, വീണ്ടെടുക്കാൻ വേറെ ഒരു മാർഗ്ഗവുമില്ല." + }, + "masterPassHintDesc": { + "message": "നിങ്ങളുടെ പാസ്‌വേഡ് മറന്നാൽ അത് ഓർമ്മിക്കാൻ ഒരു പ്രാഥമിക പാസ്‌വേഡ് സൂചന സഹായിക്കും." + }, + "reTypeMasterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് വീണ്ടും ടൈപ്പ്‌ ചെയ്യുക" + }, + "masterPassHint": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സൂചന (ഇഷ്ടാനുസൃതമായ)" + }, + "settings": { + "message": "ക്രമീകരണങ്ങള്‍" + }, + "passwordHint": { + "message": "പാസ്സ്‌വേഡ് സൂചനാ" + }, + "enterEmailToGetHint": { + "message": "നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സൂചന ലഭിക്കുന്നതിന് നിങ്ങളുടെ അക്കൗണ്ട് ഇമെയിൽ വിലാസം നൽകുക." + }, + "getMasterPasswordHint": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സൂചന നേടുക" + }, + "emailRequired": { + "message": "ഇമെയിൽ അഡ്രസ്സ് നിർബന്ധമാണ്‌." + }, + "invalidEmail": { + "message": "അസാധുവായ ഇമെയിൽ." + }, + "masterPassRequired": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് നിർബന്ധമാണ്‌." + }, + "masterPassLength": { + "message": "പ്രാഥമിക പാസ്‌വേഡിന് കുറഞ്ഞത് 8 പ്രതീകങ്ങളെങ്കിലും ദൈർഘ്യമുണ്ടായിരിക്കണം." + }, + "masterPassDoesntMatch": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സ്ഥിരീകരണം പൊരുത്തപ്പെടുന്നില്ല." + }, + "newAccountCreated": { + "message": "തങ്ങളുടെ അക്കൗണ്ട് സൃഷ്ടിക്കപ്പെട്ടു. ഇനി താങ്കൾക്ക് ലോഗിൻ ചെയ്യാം." + }, + "masterPassSent": { + "message": "നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സൂചനയുള്ള ഒരു ഇമെയിൽ ഞങ്ങൾ നിങ്ങൾക്ക് അയച്ചു." + }, + "unexpectedError": { + "message": "ഒരു അപ്രതീക്ഷിത പിശക് സംഭവിച്ചു." + }, + "itemInformation": { + "message": "വിവരം" + }, + "noItemsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ ഇനങ്ങളൊന്നുമില്ല." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ്" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് ആവശ്യമാണ്." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "തുടരുക" + }, + "enterVerificationCodeApp": { + "message": "നിങ്ങളുടെ ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷനിൽ നിന്ന് 6 അക്ക സ്ഥിരീകരണ കോഡ് നൽകുക." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$-ൽ ഇമെയിൽ ചെയ്ത 6 അക്ക സ്ഥിരീകരണ കോഡ് നൽകുക.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "സ്ഥിരീകരണ ഇമെയിൽ $EMAIL$-ലേക്ക് അയച്ചു.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "എന്നെ ഓർക്കണം" + }, + "sendVerificationCodeEmailAgain": { + "message": "സ്ഥിരീകരണ കോഡ് ഇമെയിൽ വഴി വീണ്ടും അയയ്ക്കുക" + }, + "useAnotherTwoStepMethod": { + "message": "മറ്റൊരു രണ്ട് ഘട്ട പ്രവേശന രീതി ഉപയോഗിക്കുക" + }, + "insertYubiKey": { + "message": "നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ യു‌എസ്‌ബി പോർട്ടിലേക്ക് YubiKey ഇടുക, തുടർന്ന് അതിന്റെ ബട്ടൺ അമർത്തുക." + }, + "insertU2f": { + "message": "നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ യുഎസ്ബി പോർട്ടിൽ സുരക്ഷാ കീ ഇടുക. അതിന് ഒരു ബട്ടൺ ഉണ്ടെങ്കിൽ അത് അമർത്തുക." + }, + "recoveryCodeDesc": { + "message": "നിങ്ങളുടെ രണ്ട്-ഘടക ദാതാക്കളിലേക്കുള്ള ആക്‌സസ്സ് നഷ്‌ടപ്പെട്ടോ? നിങ്ങളുടെ അക്കൗണ്ടിൽ നിന്ന് രണ്ട്-ഘടക ദാതാക്കളെ പ്രവർത്തനരഹിതമാക്കാൻ നിങ്ങളുടെ റിക്കവറി കോഡ് ഉപയോഗിക്കുക." + }, + "recoveryCodeTitle": { + "message": "റിക്കവറി കോഡ്" + }, + "authenticatorAppTitle": { + "message": "ഓതന്റിക്കേറ്റർ ആപ്പ്" + }, + "authenticatorAppDesc": { + "message": "സമയ-അടിസ്ഥാന പരിശോധന കോഡുകൾ സൃഷ്ടിക്കുന്നതിന് ഒരു ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ (ഓത്തി അല്ലെങ്കിൽ Google ഓതന്റിക്കേറ്റർ പോലുള്ളവ) ഉപയോഗിക്കുക.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP സുരക്ഷാ കീ" + }, + "yubiKeyDesc": { + "message": "നിങ്ങളുടെ അക്കൗണ്ട് ആക്സസ് ചെയ്യുന്നതിന് ഒരു യൂബിക്കി ഉപയോഗിക്കുക. YubiKey 4, 4 Nano, 4C, NEO ഉപകരണങ്ങളിൽ പ്രവർത്തിക്കുന്നു." + }, + "duoDesc": { + "message": "Duo Mobile അപ്ലിക്കേഷൻ, എസ്എംഎസ്, ഫോൺ കോൾ അല്ലെങ്കിൽ യു 2 എഫ് സുരക്ഷാ കീ ഉപയോഗിച്ച് Duoസെക്യൂരിറ്റി ഉപയോഗിച്ച് പരിശോധിക്കുക.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Duo Mobile, SMS, ഫോൺ കോൾ അല്ലെങ്കിൽ U2F സുരക്ഷാ കീ ഉപയോഗിച്ച് നിങ്ങളുടെ ഓർഗനൈസേഷനെ Duo Security ഉപയോഗിച്ച് പരിശോധിക്കുക.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "ഇമെയിൽ" + }, + "emailDesc": { + "message": "സ്ഥിരീകരണ കോഡുകൾ നിങ്ങൾക്ക് ഇമെയിൽ ചെയ്യും." + }, + "loginUnavailable": { + "message": "പ്രവേശനം ലഭ്യമല്ല" + }, + "noTwoStepProviders": { + "message": "ഈ അക്കൗണ്ടിന് രണ്ട്-ഘട്ട പ്രവേശനം പ്രാപ്തമാക്കിയിട്ടുണ്ട്, എന്നിരുന്നാലും, ക്രമീകരിച്ച രണ്ട്-ഘട്ട ദാതാക്കളെയൊന്നും ഈ ഉപകരണം പിന്തുണയ്ക്കുന്നില്ല." + }, + "noTwoStepProviders2": { + "message": "മികച്ച പിന്തുണയുള്ള, കൂടുതൽ ദാതാക്കളെ ദയവായി ചേർക്കുക (ഒരു ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ പോലുള്ളവ)." + }, + "twoStepOptions": { + "message": "രണ്ട്-ഘട്ട പ്രവേശനം ഓപ്ഷനുകൾ" + }, + "selfHostedEnvironment": { + "message": "സ്വയം ഹോസ്റ്റുചെയ്‌ത എൻവിയോണ്മെന്റ്" + }, + "selfHostedEnvironmentFooter": { + "message": "നിങ്ങളുടെ പരിസരത്ത് ചെയ്യുന്ന Bitwarden ഇൻസ്റ്റാളേഷന്റെ അടിസ്ഥാന URL വ്യക്തമാക്കുക." + }, + "customEnvironment": { + "message": "ഇഷ്‌ടാനുസൃത എൻവിയോണ്മെന്റ്" + }, + "customEnvironmentFooter": { + "message": "വിപുലമായ ഉപയോക്താക്കൾക്കായി. ഓരോ സേവനത്തിന്റെയും അടിസ്ഥാന URL നിങ്ങൾക്ക് സ്വതന്ത്രമായി വ്യക്തമാക്കാൻ കഴിയും." + }, + "baseUrl": { + "message": "സെർവർ യു ർ ൽ" + }, + "apiUrl": { + "message": "API സെർവർ URL" + }, + "webVaultUrl": { + "message": "വെബ് വാൾട് സെർവർ URL" + }, + "identityUrl": { + "message": "ഐഡന്റിറ്റി സെർവർ URL" + }, + "notificationsUrl": { + "message": "നോട്ടിഫിക്കേഷൻ സെർവർ URL" + }, + "iconsUrl": { + "message": "ഐക്കണുകളുടെ സെർവർ URL" + }, + "environmentSaved": { + "message": "എന്വിയാണമെന്റ് URL സംരക്ഷിച്ചു." + }, + "ok": { + "message": "ശരി" + }, + "yes": { + "message": "അതെ" + }, + "no": { + "message": "അല്ല" + }, + "overwritePassword": { + "message": "പാസ്‌വേഡ് പുനരാലേഖനം ചെയ്യുക" + }, + "learnMore": { + "message": "കൂടുതൽ അറിയുക" + }, + "featureUnavailable": { + "message": "സവിശേഷത ലഭ്യമല്ല" + }, + "loggedOut": { + "message": "ലോഗ് ഔട്ട് ചെയ്തിരിക്കുന്നു" + }, + "loginExpired": { + "message": "നിങ്ങളുടെ പ്രവർത്തന സമയം കഴിഞ്ഞിരിക്കുന്നു." + }, + "logOutConfirmation": { + "message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?" + }, + "logOut": { + "message": "ലോഗൗട്ട്" + }, + "addNewLogin": { + "message": "പുതിയ പ്രവേശനം ചേർക്കുക" + }, + "addNewItem": { + "message": "പുതിയ ഇനം ചേർക്കുക" + }, + "addNewFolder": { + "message": "പുതിയ ഫോൾഡർ ചേർക്കുക" + }, + "view": { + "message": "പ്രദർശനം" + }, + "account": { + "message": "അക്കൗണ്ട്" + }, + "loading": { + "message": "ലഭ്യമാക്കുന്നു..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "പാസ്സ്‌വേഡ് സൃഷ്ടാവ്" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "ബഗ്ഗ്‌ റിപ്പോർട്ട് ഫയൽ ചെയ്യുക" + }, + "blog": { + "message": "ബ്ലോഗ്" + }, + "followUs": { + "message": "ഞങ്ങളെ പിന്തുടരുക" + }, + "syncVault": { + "message": "വാൾട് സമന്വയിപ്പിക്കുക" + }, + "changeMasterPass": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് മാറ്റുക" + }, + "changeMasterPasswordConfirmation": { + "message": "തങ്ങൾക്കു Bitwarden വെബ് വാൾട്ടിൽ പ്രാഥമിക പാസ്‌വേഡ് മാറ്റാൻ സാധിക്കും.വെബ്സൈറ്റ് ഇപ്പോൾ സന്ദർശിക്കാൻ ആഗ്രഹിക്കുന്നുവോ?" + }, + "fingerprintPhrase": { + "message": "ഫിംഗർപ്രിന്റ് ഫ്രേസ്‌", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "നിങ്ങളുടെ അക്കൗണ്ടിൻ്റെ ഫിംഗർപ്രിന്റ് ഫ്രേസ്‌", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "വെബ് വാൾട്ടിലേക്ക് പോകുക" + }, + "getMobileApp": { + "message": "മൊബൈൽ ആപ്പ് എടുക്കുക" + }, + "getBrowserExtension": { + "message": "ബ്രൌസർ എക്സ്റ്റൻഷൻ എടുക്കുക" + }, + "syncingComplete": { + "message": "സമന്വയം പൂർത്തിയായി" + }, + "syncingFailed": { + "message": "സമന്വയം പരാജയപ്പെട്ടു" + }, + "yourVaultIsLocked": { + "message": "തങ്ങളുടെ വാൾട് പൂട്ടിയിരിക്കുന്നു. തുടരുന്നതിന് നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക." + }, + "unlock": { + "message": "അൺലോക്ക്" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$-ൽ $EMAIL$ ലോഗിൻ ചെയ്തിരിക്കുന്നു.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "അസാധുവായ പ്രാഥമിക പാസ്‌വേഡ്" + }, + "twoStepLoginConfirmation": { + "message": "സുരക്ഷാ കീ, ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷൻ, SMS, ഫോൺ കോൾ അല്ലെങ്കിൽ ഇമെയിൽ പോലുള്ള മറ്റൊരു ഉപകരണം ഉപയോഗിച്ച് തങ്ങളുടെ ലോഗിൻ സ്ഥിരീകരിക്കാൻ ആവശ്യപ്പെടുന്നതിലൂടെ രണ്ട്-ഘട്ട ലോഗിൻ തങ്ങളുടെ അക്കൗണ്ടിനെ കൂടുതൽ സുരക്ഷിതമാക്കുന്നു. bitwarden.com വെബ് വാൾട്ടിൽ രണ്ട്-ഘട്ട ലോഗിൻ പ്രവർത്തനക്ഷമമാക്കാനാകും.തങ്ങള്ക്കു ഇപ്പോൾ വെബ്സൈറ്റ് സന്ദർശിക്കാൻ ആഗ്രഹമുണ്ടോ?" + }, + "twoStepLogin": { + "message": "രണ്ട്-ഘട്ട പ്രവേശനം" + }, + "vaultTimeout": { + "message": "വാൾട് ടൈംഔട്ട്" + }, + "vaultTimeoutDesc": { + "message": "തങ്ങളുടെ വാൾട് എപ്പോൾ ടൈംഔട്ട് ആകും എന്ന് നിശ്ചയിക്കുക. തിരഞ്ഞെടുത്ത പ്രവർത്തനം നടത്തുക." + }, + "immediately": { + "message": "ഉടനെ" + }, + "tenSeconds": { + "message": "10 സെക്കൻഡ്" + }, + "twentySeconds": { + "message": "20 സെക്കന്റുകള്‍" + }, + "thirtySeconds": { + "message": "30 സെക്കൻഡ്" + }, + "oneMinute": { + "message": "1 മിനിറ്റ്" + }, + "twoMinutes": { + "message": "2 മിനിറ്റ്" + }, + "fiveMinutes": { + "message": "5 മിനിറ്റ്" + }, + "fifteenMinutes": { + "message": "15 മിനിറ്റ്" + }, + "thirtyMinutes": { + "message": "30 മിനിറ്റ്" + }, + "oneHour": { + "message": "1 മണിക്കൂർ" + }, + "fourHours": { + "message": "4 മണിക്കൂർ" + }, + "onIdle": { + "message": "സിസ്റ്റം നിഷ്‌ക്രിയം" + }, + "onSleep": { + "message": "സിസ്റ്റം സ്ലീപ്പിൽ" + }, + "onLocked": { + "message": "സിസ്റ്റം ലോക്കിൽ" + }, + "onRestart": { + "message": "പുനരാരംഭിക്കുമ്പോൾ" + }, + "never": { + "message": "അത് ചെയ്യരുത്" + }, + "security": { + "message": "സുരക്ഷ" + }, + "clearClipboard": { + "message": "ക്ലിപ്ബോര്‍ഡ് മായ്ക്കുക", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "നിങ്ങളുടെ ക്ലിപ്പ്ബോർഡിൽ നിന്ന് പകർത്തിയ മൂല്യങ്ങൾ സ്വയം മായ്‌ക്കുക.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "വെബ്‌സൈറ്റ് ഐക്കണുകൾ പ്രവർത്തനരഹിതമാക്കുക" + }, + "disableFaviconDesc": { + "message": "വെബ്സൈറ്റ് ഐക്കണുകൾ നിങ്ങളുടെ വാൾട്ടിലെ പ്രവേശനങ്ങളുടെ അടുത്തായി തിരിച്ചറിയുന്ന ഒരു ചിത്രം ഉൾപ്പെടുത്തുന്നു." + }, + "enableMinToTray": { + "message": "ട്രേ ഐക്കണിലേക്ക് ചെറുതാക്കുക" + }, + "enableMinToTrayDesc": { + "message": "വിൻഡോ ചെറുതാക്കുമ്പോൾ, പകരം സിസ്റ്റം ട്രേയിൽ ഒരു ഐക്കൺ കാണിക്കുക." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "ട്രേ ഐക്കണിൽ ക്ലോസ് ചെയ്യുക" + }, + "enableCloseToTrayDesc": { + "message": "വിൻഡോ അടയ്‌ക്കുമ്പോൾ, സിസ്റ്റം ട്രേയിൽ ഒരു ഐക്കൺ പകരമായി കാണിക്കുക." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "ട്രേ ഐക്കൺ പ്രവർത്തനക്ഷമമാക്കുക" + }, + "enableTrayDesc": { + "message": "സിസ്റ്റം ട്രേയിൽ എല്ലായ്പ്പോഴും ഒരു ഐക്കൺ കാണിക്കുക." + }, + "startToTray": { + "message": "ട്രേ ഐക്കണിൽ ആരംഭിക്കുക" + }, + "startToTrayDesc": { + "message": "അപ്ലിക്കേഷൻ ആദ്യം ആരംഭിക്കുമ്പോൾ, സിസ്റ്റം ട്രേയിൽ ഒരു ഐക്കൺ മാത്രം കാണിക്കുക." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "ഭാഷ" + }, + "languageDesc": { + "message": "അപ്ലിക്കേഷൻ ഉപയോഗിക്കുന്ന ഭാഷ മാറ്റുക. പുനരാരംഭിക്കൽ ആവശ്യമാണ്." + }, + "theme": { + "message": "തീം" + }, + "themeDesc": { + "message": "അപ്ലിക്കേഷന്റെ തീമും വർണ്ണങ്ങളും മാറ്റുക." + }, + "dark": { + "message": "ഇരുണ്ടത്", + "description": "Dark color" + }, + "light": { + "message": "ലൈറ്റ്", + "description": "Light color" + }, + "copy": { + "message": "പകർത്തുക", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "അപ്‌ഡേറ്റുകൾക്കായി പരിശോധിക്കുക" + }, + "version": { + "message": "വേർഷൻ $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "അപ്‌ഡേറ്റുചെയ്യാൻ പുനരാരംഭിക്കുക" + }, + "restartToUpdateDesc": { + "message": "വേർഷൻ $VERSION_NUM$ ഇൻസ്റ്റാൾ ചെയ്യാൻ തയ്യാറാണ്. ഇൻസ്റ്റാളേഷൻ പൂർത്തിയാക്കുന്നതിന് നിങ്ങൾ അപ്ലിക്കേഷൻ പുനരാരംഭിക്കണം. ഇപ്പോൾ പുനരാരംഭിച്ച് അപ്‌ഡേറ്റ് ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "അപ്ഡേറ്റ് ലഭ്യമാണ്" + }, + "updateAvailableDesc": { + "message": "ഒരു അപ്‌ഡേറ്റ് കണ്ടെത്തി. നിങ്ങൾക്കിപ്പോൾ ഇത് ഡൌൺലോഡ് ചെയ്യണോ?" + }, + "restart": { + "message": "പുനരാരംഭിക്കുക" + }, + "later": { + "message": "പിന്നീട്" + }, + "noUpdatesAvailable": { + "message": "അപ്‌ഡേറ്റുകളൊന്നും നിലവിൽ ലഭ്യമല്ല. നിങ്ങൾ ഏറ്റവും പുതിയ വേർഷൻ ഉപയോഗിക്കുന്നു." + }, + "updateError": { + "message": "അപ്ഡേറ്റിൽ പിശക് സംഭവിച്ചു" + }, + "unknown": { + "message": "അറിയപ്പെടാത്ത" + }, + "copyUsername": { + "message": "ഉപയോക്തൃനാമം പകർത്തുക" + }, + "copyNumber": { + "message": "അക്കം പകർത്തുക", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "സുരക്ഷാ കോഡ് പകർത്തുക", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "പ്രീമിയം അംഗത്വം" + }, + "premiumManage": { + "message": "അംഗത്വം നിയന്ത്രിക്കുക" + }, + "premiumManageAlert": { + "message": "നിങ്ങളുടെ അംഗത്വം bitwarden.com വെബ് വാൾട്ടിൽ നിയന്ദ്രിക്കാൻ സാധിക്കും. നിങ്ങൾക്ക് ഇപ്പോൾ വെബ്സൈറ്റ് സന്ദർശിക്കാൻ ആഗ്രഹമുണ്ടോ?" + }, + "premiumRefresh": { + "message": "അംഗത്വം റിഫ്രഷ് ചെയ്യുക" + }, + "premiumNotCurrentMember": { + "message": "നിങ്ങൾ നിലവിൽ ഒരു പ്രീമിയം അംഗമല്ല." + }, + "premiumSignUpAndGet": { + "message": "ഒരു പ്രീമിയം അംഗത്വത്തിനായി സൈൻ അപ്പ് ചെയ്ത് നേടുക:" + }, + "premiumSignUpStorage": { + "message": "ഫയൽ അറ്റാച്ചുമെന്റുകൾക്കായി 1 GB എൻക്രിപ്റ്റുചെയ്‌ത സ്റ്റോറേജ്." + }, + "premiumSignUpTwoStep": { + "message": "രണ്ട്-ഘട്ട പ്രവേശന ഓപ്ഷനുകളായ Yubikey, FIDO U2F, Duo." + }, + "premiumSignUpReports": { + "message": "നിങ്ങളുടെ വാൾട് സൂക്ഷിക്കുന്നതിന്. പാസ്‌വേഡ് ശുചിത്വം, അക്കൗണ്ട് ആരോഗ്യം, ഡാറ്റ ലംഘന റിപ്പോർട്ടുകൾ." + }, + "premiumSignUpTotp": { + "message": "നിങ്ങളുടെ വാൾട്ടിലെ പ്രവേശനങ്ങൾക്കായി TOTP പരിശോധന കോഡ് (2FA) സൃഷ്ടാവ്." + }, + "premiumSignUpSupport": { + "message": "മുൻ‌ഗണന ഉപഭോക്തൃ പിന്തുണ." + }, + "premiumSignUpFuture": { + "message": "ഭാവിയിലെ എല്ലാ പ്രീമിയം സവിശേഷതകളും. കൂടുതൽ ഉടനെ വരുന്നു !" + }, + "premiumPurchase": { + "message": "പ്രീമിയം വാങ്ങുക" + }, + "premiumPurchaseAlert": { + "message": "നിങ്ങൾക്ക് bitwarden.com വെബ് വാൾട്ടിൽ പ്രീമിയം അംഗത്വം വാങ്ങാം. നിങ്ങൾക്ക് ഇപ്പോൾ വെബ്സൈറ്റ് സന്ദർശിക്കാൻ ആഗ്രഹമുണ്ടോ?" + }, + "premiumCurrentMember": { + "message": "തങ്ങൾ ഒരു പ്രീമിയം അംഗമാണ്!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden-നെ പിന്തുണച്ചതിന് നന്ദി." + }, + "premiumPrice": { + "message": "എല്ലാം വെറും $PRICE$/ വർഷത്തേക്ക്!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "റിഫ്രഷ് പൂർത്തിയായി" + }, + "passwordHistory": { + "message": "പാസ്സ്‌വേഡ് ചരിത്രം" + }, + "clear": { + "message": "മായ്ക്കുക", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ പാസ്സ്‌വേഡുകൾ ഒന്നും ഇല്ല." + }, + "undo": { + "message": "തിരിച്ചാക്കുക" + }, + "redo": { + "message": "പുതിയപടിയാക്കുക" + }, + "cut": { + "message": "കട്ട്", + "description": "Cut to clipboard" + }, + "paste": { + "message": "ഒട്ടിക്കുക", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "എല്ലാം തിരഞ്ഞെടുക്കുക" + }, + "zoomIn": { + "message": "വലുതാക്കുക" + }, + "zoomOut": { + "message": "ചെറുതാക്കുക" + }, + "resetZoom": { + "message": "സൂം പുന സജ്ജമാക്കുക" + }, + "toggleFullScreen": { + "message": "ഫുൾ സ്ക്രീൻ ആക്കുക" + }, + "reload": { + "message": "വീണ്ടും ലഭ്യമാക്കുക" + }, + "toggleDevTools": { + "message": "ഡവലപ്പർ ഉപകരണങ്ങൾ ടോഗിൾ ചെയ്യുക" + }, + "minimize": { + "message": "ചെറുതാക്കുക", + "description": "Minimize window" + }, + "zoom": { + "message": "സൂം" + }, + "bringAllToFront": { + "message": "എല്ലാം മുന്നിലേക്ക് കൊണ്ടുവരുക", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Bitwarden-നെ കുറിച്ച്" + }, + "services": { + "message": "സേവനങ്ങള്‍" + }, + "hideBitwarden": { + "message": "Bitwarden മറയ്ക്കുക" + }, + "hideOthers": { + "message": "മറ്റുള്ളതിനെ മറയ്കുക" + }, + "showAll": { + "message": "എല്ലാം കാണിക്കുക" + }, + "quitBitwarden": { + "message": "Bitwarden നിർത്തുക" + }, + "valueCopied": { + "message": "$VALUE$ പകർത്തി", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "സഹായം" + }, + "window": { + "message": "വിൻഡോ" + }, + "checkPassword": { + "message": "പാസ്സ്‌വേർഡ് ചോർന്നോ എന്ന് നോക്കുക." + }, + "passwordExposed": { + "message": "ഈ പാസ്‌വേഡ് ഡാറ്റാ $VALUE$ ലംഘനങ്ങളിൽ ചോർന്നു. തങ്ങൾ ഇത് മാറ്റണം.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "അറിയപ്പെടുന്ന ഡാറ്റാ ലംഘനങ്ങളിൽ ഒന്നും ഈ പാസ്‌വേഡ് കണ്ടെത്തിയില്ല. ഇത് ഉപയോഗിക്കുന്നത് സുരക്ഷിതമായിരിക്കും." + }, + "baseDomain": { + "message": "അടിസ്ഥാന ഡൊമെയ്ൻ", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "ഹോസ്റ്റ്", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "കൃത്യമായി" + }, + "startsWith": { + "message": "തുടങ്ങുന്നത്" + }, + "regEx": { + "message": "പതിവ് പദപ്രയോഗം", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "പൊരുത്തം കണ്ടെത്തൽ", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "സാധാരണ കണ്ടെത്തൽ", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "ഓപ്ഷനുകൾ ടോഗിൾ ചെയ്യുക" + }, + "organization": { + "message": "ഓർഗനൈസേഷൻ", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "സാധാരണ പോലെ" + }, + "exit": { + "message": "പുറത്തേക്കുപോവുക" + }, + "showHide": { + "message": "കാണിക്കുക/മറയ്ക്കുക", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "ട്രേയിലേക്ക് മറയ്‌ക്കുക" + }, + "alwaysOnTop": { + "message": "എപ്പോഴും മുകളിൽ", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "പുതുക്കിയത്", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "പാസ്‍വേഡ് പുതുക്കി", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "വാൾട് എക്സ്പോർട്" + }, + "fileFormat": { + "message": "ഫയൽ ഫോർമാറ്റ്" + }, + "warning": { + "message": "മുന്നറിയിപ്പ്", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "വാൾട് എക്‌സ്‌പോർട്ട് ഉറപ്പാക്കു" + }, + "exportWarningDesc": { + "message": "ഈ എക്‌സ്‌പോർട്ടിൽ എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഫോർമാറ്റിൽ നിങ്ങളുടെ വാൾട് ഡാറ്റ അടങ്ങിയിരിക്കുന്നു. എക്‌സ്‌പോർട് ചെയ്ത ഫയൽ സുരക്ഷിതമല്ലാത്ത ചാനലുകളിൽ (ഇമെയിൽ പോലുള്ളവ) നിങ്ങൾ സംഭരിക്കുകയോ അയയ്ക്കുകയോ ചെയ്യരുത്. നിങ്ങൾ ഇത് ഉപയോഗിച്ചുകഴിഞ്ഞാലുടൻ അത് മായ്ച്ചുകളയണം." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "നിങ്ങൾ ഒരു സംഘടനയുടെയും അംഗമല്ല. മറ്റ് ഉപയോക്താക്കളുമായി ഇനങ്ങൾ സുരക്ഷിതമായി പങ്കിടാൻ ഓർഗനൈസേഷനുകൾ നിങ്ങളെ അനുവദിക്കുന്നു." + }, + "noCollectionsInList": { + "message": "പ്രദർശിപ്പിക്കാൻ കളക്ഷൻസ് ഒന്നും ഇല്ല." + }, + "ownership": { + "message": "ഉടമസ്ഥാവകാശം" + }, + "whoOwnsThisItem": { + "message": "ഈ ഇനം ആരുടേതാണ്?" + }, + "strong": { + "message": "ശക്തമാണ്", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "നല്ലതാണ്", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "ദുർബലമാണ്", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "ദുര്ബലമായ പ്രാഥമിക പാസ്‌വേഡ്" + }, + "weakMasterPasswordDesc": { + "message": "നിങ്ങൾ തിരഞ്ഞെടുത്ത പ്രാഥമിക പാസ്‌വേഡ് ദുർബലമാണ്. നിങ്ങളുടെ Bitwarden അക്കൗണ്ട് ശരിയായി സുരക്ഷിതമാക്കാൻ നിങ്ങൾ ഒരു ശക്തമായ മാസ്റ്റർ പാസ്‌വേഡ് (അല്ലെങ്കിൽ ഒരു പാസ്‌ഫ്രേസ്) ഉപയോഗിക്കണം. ഈ മാസ്റ്റർ പാസ്‌വേഡ് ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "pin": { + "message": "പിൻ", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "പിൻ ഉപയോഗിച്ച് അൺലോക്കുചെയ്യുക" + }, + "setYourPinCode": { + "message": "Bitwarden അൺലോക്കുചെയ്യുന്നതിന് നിങ്ങളുടെ പിൻ കോഡ് ക്രമീകരിക്കുക. നിങ്ങൾ എപ്പോഴെങ്കിലും അപ്ലിക്കേഷനിൽ നിന്ന് പൂർണ്ണമായി ലോഗ് ഔട്ട് ചെയ്യുകയാണെങ്കിൽ, പിൻ ക്രമീകരണങ്ങൾ പുനസജ്ജമാക്കും." + }, + "pinRequired": { + "message": "പിൻ കോഡ് നിർബന്ധമാണ്‌." + }, + "invalidPin": { + "message": "അസാധുവായ പിൻ കോഡ്." + }, + "unlockWithWindowsHello": { + "message": "Windows Hello ഉപയോഗിച്ച് അൺലോക്കുചെയ്യുക" + }, + "windowsHelloConsentMessage": { + "message": "Bitwarden വേണ്ടി പരിശോധിച്ചുറപ്പിക്കുക." + }, + "unlockWithTouchId": { + "message": "Touch ID ഉപയോഗിച്ച് അൺലോക്കുചെയ്യുക" + }, + "touchIdConsentMessage": { + "message": "Bitwarden വേണ്ടി പരിശോധിച്ചുറപ്പിക്കുക." + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "പുനരാരംഭിക്കുമ്പോൾ പ്രാഥമിക പാസ്‌വേഡ് ഉപയോഗിച്ച് പൂട്ടുക" + }, + "preferences": { + "message": "ക്രമീകരണങ്ങൾ" + }, + "enableMenuBar": { + "message": "മെനു ബാറിലെ ഐക്കണുകൾ പ്രാപ്തമാക്കുക" + }, + "enableMenuBarDesc": { + "message": "മെനു ബാറിൽ എല്ലായ്പ്പോഴും ഐക്കൺ കാണിക്കുക." + }, + "hideToMenuBar": { + "message": "മെനു ബാറിലേക്ക് മറയ്‌ക്കുക" + }, + "selectOneCollection": { + "message": "നിങ്ങൾ ഒരു കളക്ഷനെങ്കിലും തിരഞ്ഞെടുക്കണം." + }, + "premiumUpdated": { + "message": "നിങ്ങൾ പ്രീമിയത്തിലേക്ക് അപ്‌ഗ്രേഡുചെയ്‌തു." + }, + "restore": { + "message": "വീണ്ടെടുക്കുക" + }, + "premiumManageAlertAppStore": { + "message": "ആപ്പ് സ്റ്റോറിൽ നിന്ന് നിങ്ങളുടെ സബ്‌സ്‌ക്രിപ്‌ഷൻ മാനേജുചെയ്യാനാകും. തങ്ങൾക്കു ഇപ്പോൾ ആപ്പ് സ്റ്റോർ സന്ദർശിക്കണോ?" + }, + "legal": { + "message": "നിയമപരമായ", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "സേവന വ്യവസ്ഥകൾ" + }, + "privacyPolicy": { + "message": "സ്വകാര്യതാനയം" + }, + "unsavedChangesConfirmation": { + "message": "നിങ്ങൾക്ക് പോകണമെന്ന് ഉറപ്പാണോ? നിങ്ങൾ ഇപ്പോൾ പോയാൽ നിങ്ങളുടെ നിലവിലെ വിവരങ്ങൾ സംരക്ഷിക്കില്ല." + }, + "unsavedChangesTitle": { + "message": "സ്ഥിരപ്പെടാത്ത മാറ്റങ്ങൾ" + }, + "clone": { + "message": "ക്ലോൺ" + }, + "passwordGeneratorPolicyInEffect": { + "message": "ഒന്നോ അതിലധികമോ സംഘടന നയങ്ങൾ നിങ്ങളുടെ പാസ്സ്‌വേഡ് സൃഷ്ടാവിൻ്റെ ക്രമീകരണങ്ങളെ ബാധിക്കുന്നു." + }, + "vaultTimeoutAction": { + "message": "വാൾട് ടൈം ഔട്ട് പ്രവർത്തനം" + }, + "vaultTimeoutActionLockDesc": { + "message": "ലോക്കുചെയ്‌ത വാൾട് വീണ്ടും ആക്‌സസ് ചെയ്യുന്നതിന് തങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് വീണ്ടും നൽകേണ്ടതാണ്." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "ലോഗ് ഔട്ട് ചെയ്ത വാൾട് വീണ്ടും അക്സസ്സ് ചെയ്യാൻ ഓതെന്റിക്കേഷൻ ആവശ്യം വേരും." + }, + "lock": { + "message": "പൂട്ടുക", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "ട്രാഷ്", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "ട്രാഷ് തിരയുക" + }, + "permanentlyDeleteItem": { + "message": "ഇനം എന്നെന്നേക്കുമായി നീക്കം ചെയ്യുക" + }, + "permanentlyDeleteItemConfirmation": { + "message": "ഈ എന്നെന്നേക്കുമായി നീക്കം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "permanentlyDeletedItem": { + "message": "എന്നെന്നേക്കുമായി നീക്കം ചെയ്ത ഇനം" + }, + "restoreItem": { + "message": "ഇനം വീണ്ടെടുക്കുക" + }, + "restoreItemConfirmation": { + "message": "ഈ ഇനം വീണ്ടെടുക്കണമെന്ന് ഉറപ്പാണോ?" + }, + "restoredItem": { + "message": "വീണ്ടെടുത്ത ഇനങ്ങൾ" + }, + "permanentlyDelete": { + "message": "എന്നെന്നേക്കുമായി നീക്കം ചെയ്യുക" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "ലോഗ് ഔട്ട് ചെയ്യുന്നത് തങ്ങളുടെ വാൾട്ടിലേക്കുള്ള എല്ലാ ആക്സസും നീക്കംചെയ്യുകയും. കാലയളവിനുശേഷം ഓൺലൈൻ ഓതന്റിക്കേറ്റർ ആവശ്യമാണ്. ഈ ക്രമീകരണം ഉപയോഗിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "ടൈംഔട് ആക്ഷൻ സ്ഥിരീകരണം" + }, + "enterpriseSingleSignOn": { + "message": "എന്റർപ്രൈസ് SSO" + }, + "setMasterPassword": { + "message": "പ്രാഥമിക പാസ്‌വേഡ് സജ്ജമാക്കുക" + }, + "ssoCompleteRegistration": { + "message": "SSO ഉപയോഗിച്ച് പ്രവേശനം പൂർത്തിയാക്കാനും, നിങ്ങളുടെ വാൾട് ആക്സസ് ചെയ്യാനും സുരക്ഷിതമാക്കാനും ഒരു പ്രാഥമിക പാസ്‌വേഡ് സജ്ജമാക്കുക." + }, + "newMasterPass": { + "message": "പുതിയ പ്രാഥമിക പാസ്‌വേഡ്" + }, + "confirmNewMasterPass": { + "message": "പുതിയ പ്രാഥമിക പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക" + }, + "masterPasswordPolicyInEffect": { + "message": "ഒന്നോ അതിലധികമോ ഓർഗനൈസേഷൻ നയങ്ങൾക്ക് ഇനിപ്പറയുന്ന ആവശ്യകതകൾ നിറവേറ്റുന്നതിന് നിങ്ങളുടെ മാസ്റ്റർ പാസ്‌വേഡ് ആവശ്യമാണ്:" + }, + "policyInEffectMinComplexity": { + "message": "സങ്കീർണ്ണതയുടെ കുറഞ്ഞ സ്കോർ$SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "കുറഞ്ഞ ദൈർഘ്യം $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "ഒന്നോ അതിലധികമോ വലിയക്ഷരങ്ങൾ അടങ്ങിയിരിക്കുന്ന" + }, + "policyInEffectLowercase": { + "message": "ഒന്നോ അതിലധികമോ ചെറിയക്ഷരങ്ങൾ അടങ്ങിയിരിക്കുന്ന" + }, + "policyInEffectNumbers": { + "message": "ഒന്നോ അതിലധികമോ അക്കങ്ങൾ അടങ്ങിയിരിക്കുന്ന" + }, + "policyInEffectSpecial": { + "message": "ഇനിപ്പറയുന്ന ഒന്നോ അതിലധികമോ പ്രത്യേക പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കുന്ന:$CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "നിങ്ങളുടെ പുതിയ മാസ്റ്റർ പാസ്‌വേഡ് നയ ആവശ്യകതകൾ നിറവേറ്റുന്നില്ല." + }, + "acceptPolicies": { + "message": "ഈ ബോക്സ് ചെക്കുചെയ്യുന്നതിലൂടെ നിങ്ങൾ ഇനിപ്പറയുന്നവ അംഗീകരിക്കുന്നു:" + }, + "acceptPoliciesError": { + "message": "സേവന നിബന്ധനകളും സ്വകാര്യതാ നയവും അംഗീകരിച്ചിട്ടില്ല." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "അംഗീകരിക്കുക" + }, + "verifyBrowserTitle": { + "message": "ബ്രൗസർ കണക്ഷൻ ഉറപ്പാക്കുക" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "ബയോമെട്രിക്സ് പ്രാപ്തമാക്കിയിട്ടില്ല" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "എല്ലാം Send-കൾ", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "ഫയൽ" + }, + "sendTypeText": { + "message": "വാചകം" + }, + "searchSends": { + "message": "Sends തിരയുക", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send തിരുത്തുക", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "എൻ്റെ വാൾട്" + }, + "text": { + "message": "വാചകം" + }, + "deletionDate": { + "message": "ഇല്ലാതാക്കൽ തീയതി" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json new file mode 100644 index 0000000000..bbfbab3419 --- /dev/null +++ b/apps/desktop/src/locales/nb/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtre" + }, + "allItems": { + "message": "Alle objekter" + }, + "favorites": { + "message": "Favoritter" + }, + "types": { + "message": "Typer" + }, + "typeLogin": { + "message": "Innlogging" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Sikker notis" + }, + "folders": { + "message": "Mapper" + }, + "collections": { + "message": "Samlinger" + }, + "searchVault": { + "message": "Søk i hvelvet" + }, + "addItem": { + "message": "Legg til objekt" + }, + "shared": { + "message": "Delt" + }, + "share": { + "message": "Del" + }, + "moveToOrganization": { + "message": "Flytt til organisasjon" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flyttet til $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Velg en organisasjon som du ønsker å flyttet elementet til. Ved å flytte til en organisasjon, overfører du eierskapet til elementet til den organisasjonen. Du vil ikke lenger være den direkte eieren av elementet etter at den har blitt flyttet." + }, + "attachments": { + "message": "Vedlegg" + }, + "viewItem": { + "message": "Vis objektet" + }, + "name": { + "message": "Navn" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Ny URI" + }, + "username": { + "message": "Brukernavn" + }, + "password": { + "message": "Passord" + }, + "passphrase": { + "message": "Passfrase" + }, + "editItem": { + "message": "Rediger objektet" + }, + "emailAddress": { + "message": "E-postadresse" + }, + "verificationCodeTotp": { + "message": "Verifiseringskode (TOTP)" + }, + "website": { + "message": "Nettsted" + }, + "notes": { + "message": "Notater" + }, + "customFields": { + "message": "Tilpassede felter" + }, + "launch": { + "message": "Åpne" + }, + "copyValue": { + "message": "Kopier verdien", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimer vinduet ved kopiering til utklippstavlen" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Bitwarden-vinduet minimeres automatisk når et objekts data kopieres til utklippstavlen." + }, + "toggleVisibility": { + "message": "Juster synlighet" + }, + "toggleCollapse": { + "message": "Bytt mellom skjul/utvid", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kortholderens navn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Merke" + }, + "expiration": { + "message": "Utløp" + }, + "securityCode": { + "message": "Sikkerhetskode" + }, + "identityName": { + "message": "Identitetsnavn" + }, + "company": { + "message": "Firma" + }, + "ssn": { + "message": "Personnummer" + }, + "passportNumber": { + "message": "Passnummer" + }, + "licenseNumber": { + "message": "Lisensnummer" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresse" + }, + "premiumRequired": { + "message": "Premium er påkrevd" + }, + "premiumRequiredDesc": { + "message": "Et Premium-medlemskap er påkrevd for å bruke denne funksjonen." + }, + "errorOccurred": { + "message": "En feil har oppstått." + }, + "error": { + "message": "Feil" + }, + "january": { + "message": "Januar" + }, + "february": { + "message": "Februar" + }, + "march": { + "message": "Mars" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Mai" + }, + "june": { + "message": "Juni" + }, + "july": { + "message": "Juli" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "Desember" + }, + "ex": { + "message": "f․eks.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Tittel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Frøken" + }, + "dr": { + "message": "Dr․" + }, + "expirationMonth": { + "message": "Utløpsmåned" + }, + "expirationYear": { + "message": "Utløpsår" + }, + "select": { + "message": "Velg" + }, + "other": { + "message": "Annet" + }, + "generatePassword": { + "message": "Generer et passord" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "Fornavn" + }, + "middleName": { + "message": "Mellomnavn" + }, + "lastName": { + "message": "Etternavn" + }, + "fullName": { + "message": "Fullt navn" + }, + "address1": { + "message": "Adresse 1" + }, + "address2": { + "message": "Adresse 2" + }, + "address3": { + "message": "Adresse 3" + }, + "cityTown": { + "message": "By / Tettsted" + }, + "stateProvince": { + "message": "Fylke / Region" + }, + "zipPostalCode": { + "message": "Postnummer" + }, + "country": { + "message": "Land" + }, + "save": { + "message": "Lagre" + }, + "cancel": { + "message": "Lukk" + }, + "delete": { + "message": "Slett" + }, + "favorite": { + "message": "Favoritt" + }, + "edit": { + "message": "Rediger" + }, + "authenticatorKeyTotp": { + "message": "Autentiseringsnøkkel (TOTP)" + }, + "folder": { + "message": "Mappe" + }, + "newCustomField": { + "message": "Nytt egendefinert felt" + }, + "value": { + "message": "Verdi" + }, + "dragToSort": { + "message": "Dra for å sortere" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Skjult" + }, + "cfTypeBoolean": { + "message": "Boolsk verdi" + }, + "cfTypeLinked": { + "message": "Tilknyttet", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Tilknyttet verdi", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Fjern" + }, + "nameRequired": { + "message": "Et navn er påkrevd." + }, + "addedItem": { + "message": "La til gjenstanden" + }, + "editedItem": { + "message": "Redigerte gjenstanden" + }, + "deleteItem": { + "message": "Slett objektet" + }, + "deleteFolder": { + "message": "Slett mappen" + }, + "deleteAttachment": { + "message": "Slett vedlegget" + }, + "deleteItemConfirmation": { + "message": "Er du sikker på at du vil slette dette objektet?" + }, + "deletedItem": { + "message": "Slettet objektet" + }, + "overwritePasswordConfirmation": { + "message": "Er du sikker på at du vil overskrive det nåværende passordet?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Ingen mappe", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Legg til en mappe" + }, + "editFolder": { + "message": "Rediger mappen" + }, + "regeneratePassword": { + "message": "Regenerer passord" + }, + "copyPassword": { + "message": "Kopier passordet" + }, + "copyUri": { + "message": "Kopier URIen" + }, + "copyVerificationCodeTotp": { + "message": "Kopier verifiseringskode (TOTP)" + }, + "length": { + "message": "Lengde" + }, + "numWords": { + "message": "Antall ord" + }, + "wordSeparator": { + "message": "Ordskiller" + }, + "capitalize": { + "message": "Stor forbokstav", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkluder nummer" + }, + "close": { + "message": "Lukk" + }, + "minNumbers": { + "message": "Minst antall numre" + }, + "minSpecial": { + "message": "Minst antall spesialtegn", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Unngå tvetydige tegn" + }, + "searchCollection": { + "message": "Søk i samling" + }, + "searchFolder": { + "message": "Søk i mappe" + }, + "searchFavorites": { + "message": "Søk i favoritter" + }, + "searchType": { + "message": "Søk i type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Legg til et nytt vedlegg" + }, + "deletedAttachment": { + "message": "Slettet vedlegget" + }, + "deleteAttachmentConfirmation": { + "message": "Er du sikker på at du vil slette dette vedlegget?" + }, + "attachmentSaved": { + "message": "Vedlegget har blitt lagret." + }, + "file": { + "message": "Fil" + }, + "selectFile": { + "message": "Velg en fil." + }, + "maxFileSize": { + "message": "Den maksimale filstørrelsen er 500 MB." + }, + "updateKey": { + "message": "Du kan ikke bruke denne funksjonen før du oppdaterer krypteringsnøkkelen din." + }, + "editedFolder": { + "message": "Redigerte mappen" + }, + "addedFolder": { + "message": "La til en mappe" + }, + "deleteFolderConfirmation": { + "message": "Er du sikker på at du vil slette denne mappen?" + }, + "deletedFolder": { + "message": "Slettet mappen" + }, + "loginOrCreateNewAccount": { + "message": "Logg på eller opprett en ny konto for å få tilgang til ditt sikre hvelv." + }, + "createAccount": { + "message": "Opprett en konto" + }, + "logIn": { + "message": "Logg på" + }, + "submit": { + "message": "Send inn" + }, + "masterPass": { + "message": "Hovedpassord" + }, + "masterPassDesc": { + "message": "Superpassordet er passordet du bruker for å få tilgang til hvelvet ditt. Det er veldig viktig at du aldri glemmer ditt superpassord. Det er ingen måter å få tilbake passordet på dersom du noensinne skulle klare å glemme det." + }, + "masterPassHintDesc": { + "message": "Et hint for superpassordet kan hjelpe deg med å huske på passordet dersom du skulle glemme det." + }, + "reTypeMasterPass": { + "message": "Skriv inn hovedpassordet på nytt" + }, + "masterPassHint": { + "message": "Hint for hovedpassordet (valgfritt)" + }, + "settings": { + "message": "Innstillinger" + }, + "passwordHint": { + "message": "Passordhint" + }, + "enterEmailToGetHint": { + "message": "Skriv inn din kontos E-postadresse for å motta hintet til ditt superpassord." + }, + "getMasterPasswordHint": { + "message": "Få et hint om superpassordet" + }, + "emailRequired": { + "message": "E-postadressen er påkrevd." + }, + "invalidEmail": { + "message": "Ugyldig E-postadresse." + }, + "masterPassRequired": { + "message": "Superpassordet er påkrevd." + }, + "masterPassLength": { + "message": "Superpassordet må være ≥8 tegn lang." + }, + "masterPassDoesntMatch": { + "message": "Superpassord-bekreftelsen er ikke samsvarende." + }, + "newAccountCreated": { + "message": "Din nye konto har blitt opprettet! Du kan nå logge på." + }, + "masterPassSent": { + "message": "Vi har sendt deg en E-post med hintet til superpassordet." + }, + "unexpectedError": { + "message": "En uventet feil har oppstått." + }, + "itemInformation": { + "message": "Objektsinformasjon" + }, + "noItemsInList": { + "message": "Det er ingen gjenstander å liste opp." + }, + "sendVerificationCode": { + "message": "Send en verifiseringskode til e-posten din" + }, + "sendCode": { + "message": "Send kode" + }, + "codeSent": { + "message": "Kode sendt" + }, + "verificationCode": { + "message": "Verifiseringskode" + }, + "confirmIdentity": { + "message": "Bekreft identiteten din for å fortsette." + }, + "verificationCodeRequired": { + "message": "En verifiseringskode er påkrevd." + }, + "invalidVerificationCode": { + "message": "Ugyldig verifiseringskode" + }, + "continue": { + "message": "Fortsett" + }, + "enterVerificationCodeApp": { + "message": "Skriv inn den 6-sifrede verifiseringskoden som står på din autentiseringsapp." + }, + "enterVerificationCodeEmail": { + "message": "Skriv inn den 6-sifrede verifiseringskoden som ble sendt til $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "En verifiserings-E-post har blitt sendt til $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Husk på meg" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send E-posten med verifiseringskoden på nytt" + }, + "useAnotherTwoStepMethod": { + "message": "Bruk en annen 2-trinnsinnloggingsmetode" + }, + "insertYubiKey": { + "message": "Sett inn din YubiKey i din datamaskins USB-uttak, og så trykk på dens knapp." + }, + "insertU2f": { + "message": "Sett din sikkerhetsnøkkel inn i din datamaskins USB-uttak. Dersom den har en knapp, trykk på den." + }, + "recoveryCodeDesc": { + "message": "Har du mistet tilgang til alle dine 2-trinnsleverandører? Bruk din gjenopprettingskode til å fjerne alle 2-trinnsleverandører fra din konto." + }, + "recoveryCodeTitle": { + "message": "Gjenopprettingskode" + }, + "authenticatorAppTitle": { + "message": "Autentiseringsapp" + }, + "authenticatorAppDesc": { + "message": "Bruk en autentiseringsapp (f․eks․ Authy eller Google Authenticator) for å generere tidsbegrensede verifiseringskoder.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP-sikkerhetsnøkkel" + }, + "yubiKeyDesc": { + "message": "Bruk en YubiKey for å få tilgang til kontoen din. Virker med enheter av typene YubiKey 4, 4 Nano, 4C, og NEO." + }, + "duoDesc": { + "message": "Verifiser med Duo Security gjennom Duo Mobile-appen, SMS, telefonsamtale, eller en U2F-sikkerhetsnøkkel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifiser med Duo Security for din organisasjon gjennom Duo Mobile-appen, SMS, telefonsamtale, eller en U2F-sikkerhetsnøkkel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Bruk en hvilken som helst WebAuthn-aktivert sikkerhetsnøkkel for å få tilgang til kontoen din." + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Verifiseringskoder vil bli sendt til deg med E-post." + }, + "loginUnavailable": { + "message": "Innloggingen er utilgjengelig" + }, + "noTwoStepProviders": { + "message": "Denne kontoen har aktivert 2-trinnsinnlogging, men ingen av de oppsatte 2-trinnsleverandørene er støttet av denne enheten." + }, + "noTwoStepProviders2": { + "message": "Vennligst legg til ytterligere leverandører som er støttet bedre mellom enheter (f․eks․ en autentiseringsapp)." + }, + "twoStepOptions": { + "message": "Totrinns innloggingsalternativer" + }, + "selfHostedEnvironment": { + "message": "Selvbetjent miljø" + }, + "selfHostedEnvironmentFooter": { + "message": "Spesifiser grunn-nettadressen til din selvbetjente Bitwarden-installasjon." + }, + "customEnvironment": { + "message": "Tilpasset miljø" + }, + "customEnvironmentFooter": { + "message": "For avanserte brukere. Du kan bestemme grunn-nettadressen til hver tjeneste separat." + }, + "baseUrl": { + "message": "Tjener-nettadresse" + }, + "apiUrl": { + "message": "API-tjenernettadresse" + }, + "webVaultUrl": { + "message": "Netthvelvets tjeneradresse" + }, + "identityUrl": { + "message": "Identitetstjenerens nettadresse" + }, + "notificationsUrl": { + "message": "Varslingstjener-URL" + }, + "iconsUrl": { + "message": "Ikonenes tjenernettadresse" + }, + "environmentSaved": { + "message": "Miljø-nettadressene har blitt lagret." + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nei" + }, + "overwritePassword": { + "message": "Overskriv passordet" + }, + "learnMore": { + "message": "Lær mer" + }, + "featureUnavailable": { + "message": "Funksjonen er utilgjengelig" + }, + "loggedOut": { + "message": "Logget av" + }, + "loginExpired": { + "message": "Din innloggingsøkt har utløpt." + }, + "logOutConfirmation": { + "message": "Er du sikker på at du vil logge av?" + }, + "logOut": { + "message": "Logg av" + }, + "addNewLogin": { + "message": "Legg til en ny innlogging" + }, + "addNewItem": { + "message": "Legg til et nytt objekt" + }, + "addNewFolder": { + "message": "Legg til en ny mappe" + }, + "view": { + "message": "Vis" + }, + "account": { + "message": "Konto" + }, + "loading": { + "message": "Laster inn..." + }, + "lockVault": { + "message": "Lås hvelv" + }, + "passwordGenerator": { + "message": "Passordgenerator" + }, + "contactUs": { + "message": "Kontakt oss" + }, + "getHelp": { + "message": "Få hjelp" + }, + "fileBugReport": { + "message": "Legg inn en feilrapport" + }, + "blog": { + "message": "Blogg" + }, + "followUs": { + "message": "Følg oss" + }, + "syncVault": { + "message": "Synkroniser hvelvet" + }, + "changeMasterPass": { + "message": "Endre hovedpassordet" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kan endre superpassordet ditt på bitwarden.net-netthvelvet. Vil du besøke det nettstedet nå?" + }, + "fingerprintPhrase": { + "message": "Fingeravtrykksfrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Din kontos fingeravtrykksfrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Gå til netthvelvet" + }, + "getMobileApp": { + "message": "Skaff deg mobilappene" + }, + "getBrowserExtension": { + "message": "Skaff deg nettleserutvidelsene" + }, + "syncingComplete": { + "message": "Synkronisering fullført" + }, + "syncingFailed": { + "message": "Synkronisering mislyktes" + }, + "yourVaultIsLocked": { + "message": "Hvelvet ditt er låst. Bekreft hovedpassordet ditt for å fortsette." + }, + "unlock": { + "message": "Lås opp" + }, + "loggedInAsOn": { + "message": "Logget inn som $EMAIL$ på $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ugyldig superpassord" + }, + "twoStepLoginConfirmation": { + "message": "2-trinnsinnlogging gjør kontoen din mer sikker, ved å kreve at du verifiserer din innlogging med en annen enhet, f.eks. en autentiseringsapp, SMS, E-post, telefonsamtale, eller sikkerhetsnøkkel. 2-trinnsinnlogging kan aktiveres på bitwarden.com-netthvelvet. Vil du besøke den nettsiden nå?" + }, + "twoStepLogin": { + "message": "2-trinnsinnlogging" + }, + "vaultTimeout": { + "message": "Tidsavbrudd i hvelvet" + }, + "vaultTimeoutDesc": { + "message": "Velg når hvelvet ditt skal tidsavbrytes og utføre den valgte handlingen." + }, + "immediately": { + "message": "Umiddelbart" + }, + "tenSeconds": { + "message": "10 sekunder" + }, + "twentySeconds": { + "message": "20 sekunder" + }, + "thirtySeconds": { + "message": "30 sekunder" + }, + "oneMinute": { + "message": "1 minutt" + }, + "twoMinutes": { + "message": "2 minutter" + }, + "fiveMinutes": { + "message": "5 minutter" + }, + "fifteenMinutes": { + "message": "15 minutter" + }, + "thirtyMinutes": { + "message": "30 minutter" + }, + "oneHour": { + "message": "1 time" + }, + "fourHours": { + "message": "4 timer" + }, + "onIdle": { + "message": "Når PCen er inaktiv" + }, + "onSleep": { + "message": "Når PCen går i hvilemodus" + }, + "onLocked": { + "message": "Når PCen låses" + }, + "onRestart": { + "message": "Ved omstart" + }, + "never": { + "message": "Aldri" + }, + "security": { + "message": "Sikkerhet" + }, + "clearClipboard": { + "message": "Tøm utklippstavlen", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Slett automatisk kopierte verdier fra utklippstavlen.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Skru av nettstedsikoner" + }, + "disableFaviconDesc": { + "message": "Nettstedsikoner sørger for et gjenkjennelig bilde ved siden av hvert innloggingsobjekt i hvelvet ditt." + }, + "enableMinToTray": { + "message": "Minimer til oppgavelinjen" + }, + "enableMinToTrayDesc": { + "message": "Når du lukker vinduet, skal et ikon vises i oppgavelinjen i stedet." + }, + "enableMinToMenuBar": { + "message": "Minimer til menylinjen" + }, + "enableMinToMenuBarDesc": { + "message": "Når du minimerer vinduet, vil et ikon vises i oppgavelinjen i stedet." + }, + "enableCloseToTray": { + "message": "Lukk til oppgavelinjen" + }, + "enableCloseToTrayDesc": { + "message": "Når du lukker vinduet, skal et ikon vises i verktøykassen i stedet." + }, + "enableCloseToMenuBar": { + "message": "Lukk til menylinje" + }, + "enableCloseToMenuBarDesc": { + "message": "Når du lukker vinduet, vis et ikon i menylinjen i stedet." + }, + "enableTray": { + "message": "Skru på oppgavelinjeikon" + }, + "enableTrayDesc": { + "message": "Vis et ikon i verktøykassen til enhver tid." + }, + "startToTray": { + "message": "Start med oppgavelinjeikonet" + }, + "startToTrayDesc": { + "message": "Når applikasjonen starter for første gang, vises et ikon i oppgavelinjen." + }, + "startToMenuBar": { + "message": "Start på menylinjen" + }, + "startToMenuBarDesc": { + "message": "Når programmet først startes opp, vis kun et ikon i menylinjen." + }, + "openAtLogin": { + "message": "Start automatisk ved innlogging" + }, + "openAtLoginDesc": { + "message": "Start Bitwardens skrivebordsprogram automatisk ved innlogging." + }, + "alwaysShowDock": { + "message": "Alltid vis i dokken" + }, + "alwaysShowDockDesc": { + "message": "Vis Bitwarden-ikonet i dokken selv når den er minimert til menylinjen." + }, + "confirmTrayTitle": { + "message": "Bekreft avskruing av skuffen" + }, + "confirmTrayDesc": { + "message": "Å skru av denne innstillingen vil også skru av alle andre skufferelaterte innstillinger." + }, + "language": { + "message": "Språk" + }, + "languageDesc": { + "message": "Endre språket som brukes av programmet. En programomstart er påkrevd." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Endre appens fargetema." + }, + "dark": { + "message": "Mørkt", + "description": "Dark color" + }, + "light": { + "message": "Lyst", + "description": "Light color" + }, + "copy": { + "message": "Kopier", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Se etter oppdateringer" + }, + "version": { + "message": "Versjon $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Start på nytt for å oppdatere" + }, + "restartToUpdateDesc": { + "message": "Versjon $VERSION_NUM$ er klar til å installeres. Du må starte appen på nytt for å fullføre installasjonen. Vil du starte Bitwarden på nytt nå og oppdatere den?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Oppdatering tilgjengelig" + }, + "updateAvailableDesc": { + "message": "En oppdatering ble funnet. Vil du laste den ned nå?" + }, + "restart": { + "message": "Start på nytt" + }, + "later": { + "message": "Senere" + }, + "noUpdatesAvailable": { + "message": "Ingen oppdateringer er tilgjengelig for øyeblikket. Du bruker den seneste versjonen." + }, + "updateError": { + "message": "Feil ved oppdatering" + }, + "unknown": { + "message": "Ukjent" + }, + "copyUsername": { + "message": "Kopier brukernavnet" + }, + "copyNumber": { + "message": "Kopier nummeret", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopier sikkerhetskoden", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium-medlemskap" + }, + "premiumManage": { + "message": "Behandle medlemsskapet" + }, + "premiumManageAlert": { + "message": "Du kan behandle medlemskapet ditt på bitwarden.net-netthvelvet. Vil du besøke det nettstedet nå?" + }, + "premiumRefresh": { + "message": "Oppfrisk medlemsskapet" + }, + "premiumNotCurrentMember": { + "message": "Du er ikke for øyeblikket et Premium-medlem." + }, + "premiumSignUpAndGet": { + "message": "Skriv deg opp på et Premium-abonnement og få:" + }, + "premiumSignUpStorage": { + "message": "1 GB med kryptert fillagring." + }, + "premiumSignUpTwoStep": { + "message": "Ytterligere 2-trinnsinnloggingsmuligheter, slik som YubiKey, FIDO U2F, og Duo." + }, + "premiumSignUpReports": { + "message": "Passordhygiene, kontohelse, og databruddsrapporter som holder hvelvet ditt trygt." + }, + "premiumSignUpTotp": { + "message": "TOTP-verifiseringskodegenerator (2FA) for innlogginger i ditt hvelv." + }, + "premiumSignUpSupport": { + "message": "Prioritert kundestøtte." + }, + "premiumSignUpFuture": { + "message": "Alle fremtidige Premium-egenskaper. Mere er planlagt snart!" + }, + "premiumPurchase": { + "message": "Kjøp Premium" + }, + "premiumPurchaseAlert": { + "message": "Du kan kjøpe et Premium-medlemskap på bitwarden.net-netthvelvet. Vil du besøke det nettstedet nå?" + }, + "premiumCurrentMember": { + "message": "Du er et Premium-medlem!" + }, + "premiumCurrentMemberThanks": { + "message": "Takk for at du støtter Bitwarden." + }, + "premiumPrice": { + "message": "Alt dette for bare $PRICE$/år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Oppfriskning fullført" + }, + "passwordHistory": { + "message": "Passordhistorikk" + }, + "clear": { + "message": "Tøm", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Det er ingen passord å liste opp." + }, + "undo": { + "message": "Angre" + }, + "redo": { + "message": "Gjør om" + }, + "cut": { + "message": "Klipp ut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Lim inn", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Velg alt" + }, + "zoomIn": { + "message": "Forstørr" + }, + "zoomOut": { + "message": "Forminsk" + }, + "resetZoom": { + "message": "Tilbakestill forstørring" + }, + "toggleFullScreen": { + "message": "Gå inn/ut av fullskjerm" + }, + "reload": { + "message": "Oppfrisk" + }, + "toggleDevTools": { + "message": "Skru av/på utviklerverktøy" + }, + "minimize": { + "message": "Minimer", + "description": "Minimize window" + }, + "zoom": { + "message": "Forstørr" + }, + "bringAllToFront": { + "message": "Plasser fremst", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Om Bitwarden" + }, + "services": { + "message": "Tjenester" + }, + "hideBitwarden": { + "message": "Skjul Bitwarden" + }, + "hideOthers": { + "message": "Skjul andre" + }, + "showAll": { + "message": "Vis alle" + }, + "quitBitwarden": { + "message": "Avslutt Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ har blitt kopiert", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Hjelp" + }, + "window": { + "message": "Vindu" + }, + "checkPassword": { + "message": "Sjekk om passordet har blitt utsatt." + }, + "passwordExposed": { + "message": "Dette passordet har blitt utsatt $VALUE$ gang(er) i et databrudd. Du burde endre det.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Dette passordet ble ikke funnet i noen kjente databrudd. Det burde være trygt å bruke." + }, + "baseDomain": { + "message": "Grunndomene", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Vert", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Nøyaktig" + }, + "startsWith": { + "message": "Starter med" + }, + "regEx": { + "message": "Regulært uttrykk", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match-gjenkjenning", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standard match-gjenkjenning", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Skru av/på innstillinger" + }, + "organization": { + "message": "Organisasjon", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Standard" + }, + "exit": { + "message": "Avslutt" + }, + "showHide": { + "message": "Vis/Skjul", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Skjul til oppgavelinjen" + }, + "alwaysOnTop": { + "message": "Foran andre vinduer", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Oppdatert den", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Passordet ble oppdatert den", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Eksporter hvelvet" + }, + "fileFormat": { + "message": "Filformat" + }, + "warning": { + "message": "ADVARSEL", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Bekreft eksport av hvelvet" + }, + "exportWarningDesc": { + "message": "Eksporten inneholder dine hvelvdataer i et ukryptert format. Du burde ikke lagre eller sende den eksporterte filen over usikre tjenester (f.eks. E-post). Slett det umiddelbart etter at du er ferdig med å bruke dem." + }, + "encExportKeyWarningDesc": { + "message": "Denne eksporten krypterer dataene dine ved hjelp av kontoen din sin krypteringsnøkkel. Hvis du noen gang endrer krypteringsnøkkelen til kontoen din, bør du eksportere dataene igjen, ettersom du da ikke vil kunne dekryptere denne eksportfilen." + }, + "encExportAccountWarningDesc": { + "message": "Kontokrypteringsnøkler er unike for hver Bitwarden sin brukerkonto, og du kan ikke importere en kryptert eksport til en annen konto." + }, + "noOrganizationsList": { + "message": "Du tilhører ikke noen organisasjoner. Organisasjoner gjør det mulig for deg å sikkert dele objekter med andre brukere." + }, + "noCollectionsInList": { + "message": "Det er ingen samlinger å liste opp." + }, + "ownership": { + "message": "Eierskap" + }, + "whoOwnsThisItem": { + "message": "Hvem eier dette elementet?" + }, + "strong": { + "message": "Sterkt", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Bra", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Svakt", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Svakt hovedpassord" + }, + "weakMasterPasswordDesc": { + "message": "Superpassordet du har valgt er svakt. Du bør bruke et sterkt superpassord (eller en passordfrase) for å sikre Bitwarden-kontoen din på en forsvarlig måte. Er du sikker på at du vil bruke dette superpassordet?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Lås opp med PIN" + }, + "setYourPinCode": { + "message": "Angi PIN-koden for å låse opp Bitwarden. PIN-innstillingene dine blir tilbakestilt hvis du noen gang logger deg ut av applikasjonen." + }, + "pinRequired": { + "message": "PIN-kode er påkrevd." + }, + "invalidPin": { + "message": "Ugyldig PIN-kode." + }, + "unlockWithWindowsHello": { + "message": "Lås opp med Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Bekreft for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Lås opp med Touch ID" + }, + "touchIdConsentMessage": { + "message": "lås opp hvelvet ditt" + }, + "noAutoPromptWindowsHello": { + "message": "Ikke be om Windows Hello ved oppstart." + }, + "noAutoPromptTouchId": { + "message": "Ikke be om Touch ID ved oppstart." + }, + "lockWithMasterPassOnRestart": { + "message": "Lås med hovedpassord ved omstart" + }, + "preferences": { + "message": "Innstillinger" + }, + "enableMenuBar": { + "message": "Aktiver menylinjeikon" + }, + "enableMenuBarDesc": { + "message": "Vis alltid et ikon i menylinjen." + }, + "hideToMenuBar": { + "message": "Skjul til menylinjen" + }, + "selectOneCollection": { + "message": "Du må velge minst én samling." + }, + "premiumUpdated": { + "message": "Du har oppgradert til premium." + }, + "restore": { + "message": "Gjenopprett" + }, + "premiumManageAlertAppStore": { + "message": "Du kan administrere abonnementet ditt fra App Store. Ønsker du å besøke App Store nå?" + }, + "legal": { + "message": "Juridisk", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Vilkår for bruk" + }, + "privacyPolicy": { + "message": "Personvern" + }, + "unsavedChangesConfirmation": { + "message": "Er du sikker på at du ønsker å avslutte? Hvis du avslutter nå, blir ikke den nåværende informasjonen lagret." + }, + "unsavedChangesTitle": { + "message": "Ikke lagrede endringer" + }, + "clone": { + "message": "Klon" + }, + "passwordGeneratorPolicyInEffect": { + "message": "En eller flere av organisasjons retningslinjer påvirker generatorinnstillingene dine." + }, + "vaultTimeoutAction": { + "message": "Handling ved tidsavbrudd i hvelvet" + }, + "vaultTimeoutActionLockDesc": { + "message": "Et låst hvelv krever at du skriver inn hovedpassordet ditt på nytt for å få tilgang til hvelvet igjen." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Et utlogget hvelv krever at du autentiserer deg selv på nytt for å få tilgang til det igjen." + }, + "lock": { + "message": "Lås", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Papirkurv", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Søk i papirkurven" + }, + "permanentlyDeleteItem": { + "message": "Slett objektet permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Er du sikker på at du vil slette dette objektet permanent?" + }, + "permanentlyDeletedItem": { + "message": "Slett objektet permanent" + }, + "restoreItem": { + "message": "Gjenopprett objekt" + }, + "restoreItemConfirmation": { + "message": "Er du sikker på at du vil gjenopprette dette objektet?" + }, + "restoredItem": { + "message": "Gjenopprettet objekt" + }, + "permanentlyDelete": { + "message": "Slett permanent" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Hvis du logger ut, fjerner du all tilgang til hvelvet ditt og det vil bli krevd online autentisering på nytt etter tidsavbruddet. Er du sikker på at du vil bruke denne innstillingen?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bekreftelse av handling ved tidsavbrudd" + }, + "enterpriseSingleSignOn": { + "message": "Bedriftsinnlogging (SSO)" + }, + "setMasterPassword": { + "message": "Angi hovedpassord" + }, + "ssoCompleteRegistration": { + "message": "For å fullføre innloggingen med SSO, angi et superpassord for å få tilgang til og beskytte hvelvet ditt." + }, + "newMasterPass": { + "message": "Nytt hovedpassord" + }, + "confirmNewMasterPass": { + "message": "Bekreft nytt hovedpassord" + }, + "masterPasswordPolicyInEffect": { + "message": "En eller flere av organisasjonens vilkår krever hovedpassordet ditt for å oppfylle følgende krav:" + }, + "policyInEffectMinComplexity": { + "message": "Minimumspoengsum for kompleksistet er $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimumslengde på $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Inneholder én eller flere store bokstaver" + }, + "policyInEffectLowercase": { + "message": "Inneholder én eller flere små bokstaver" + }, + "policyInEffectNumbers": { + "message": "Inneholder ett eller flere tall" + }, + "policyInEffectSpecial": { + "message": "Inneholder ett eller flere av følgende spesialtegn $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Det nye hovedpassordet ditt oppfyller ikke vilkårene." + }, + "acceptPolicies": { + "message": "Ved å huke av i denne boksen sier du deg enig i følgende:" + }, + "acceptPoliciesError": { + "message": "Bruksvilkårene og personvernerklæring er ikke godkjent." + }, + "enableBrowserIntegration": { + "message": "Aktiver nettleserintegrasjon" + }, + "enableBrowserIntegrationDesc": { + "message": "Nettleserintegrasjon brukes til biometri i nettleseren." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Nettleserintegrasjon støttes ikke" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Nettleserintegrasjon støttes dessverre bare i Mac App Store-versjonen for øyeblikket." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Nettleserintegrasjon støttes ikke" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Nettleserintegrasjon er for øyeblikket dessverre ikke støttet i Windows Store-versjonen." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Krev verifisering av nettleserintegrasjon" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Aktiver et ekstra lag sikkerhet ved å kreve fingeravtrykksvalidering når du oppretter en kobling mellom skrivebordet og nettleseren. Når dette er aktivert kreves det brukerintervensjon og verifisering hver gang en tilkobling etableres." + }, + "approve": { + "message": "Godkjenn" + }, + "verifyBrowserTitle": { + "message": "Verifiser nettlesertilkoblingen" + }, + "verifyBrowserDesc": { + "message": "Kontroller at vist fingeravtrykk er identisk med fingeravtrykket som vises i nettleserutvidelsen." + }, + "biometricsNotEnabledTitle": { + "message": "Biometri er ikke aktivert" + }, + "biometricsNotEnabledDesc": { + "message": "Biometri i nettleserutvidelsen krever først aktivering i innstillinger i skrivebordsprogrammet." + }, + "personalOwnershipSubmitError": { + "message": "På grunn av bedrifsretningslinjer er du begrenset fra å lagre objekter til ditt personlige hvelv. Endre alternativ for eierskap til en organisasjon og velg blant tilgjengelige samlinger." + }, + "hintEqualsPassword": { + "message": "Passordhintet ditt kan ikke være det samme som passordet ditt." + }, + "personalOwnershipPolicyInEffect": { + "message": "En bedriftsretningslinje påvirker dine eierskapsinnstillinger." + }, + "allSends": { + "message": "Alle Send-er", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fil" + }, + "sendTypeText": { + "message": "Tekst" + }, + "searchSends": { + "message": "Søk i Send-ene", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Rediger Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mitt hvelv" + }, + "text": { + "message": "Tekst" + }, + "deletionDate": { + "message": "Dato for sletting" + }, + "deletionDateDesc": { + "message": "Send-en vil bli slettet permanent på den angitte dato og klokkeslett.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Utløpsdato" + }, + "expirationDateDesc": { + "message": "Hvis satt, vil tilgang til denne Send gå ut på angitt dato og klokkeslett.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimal antall tilganger" + }, + "maxAccessCountDesc": { + "message": "Hvis satt, vil brukere ikke lenger ha tilgang til dette send når maksimal antall tilgang er nådd.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Antall nåværende tilgang" + }, + "disableSend": { + "message": "Deaktiver denne Send-en, slik at ingen får tilgang til den.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Eventuelt krever et passord for brukere å få tilgang til denne Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notater om denne Send-en.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send lenke", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send lenke", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Når du åpner Send-en, er teksten skjult som standard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Opprettet Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Redigerte Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Slettet Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nytt passord" + }, + "whatTypeOfSend": { + "message": "Hvilken type Send er dette?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Opprett Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Teksten du ønsker å sende." + }, + "sendFileDesc": { + "message": "Filen du vil sende." + }, + "days": { + "message": "$DAYS$ dager", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dag" + }, + "custom": { + "message": "Egendefinert" + }, + "deleteSendConfirmation": { + "message": "Er du sikker på at du vil slette denne Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopier Send-lenke til utklippstavlen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopier lenken for å dele denne Send-en til utklippstavlen min ved lagring." + }, + "sendDisabled": { + "message": "Send er skrudd av", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "På grunn av en virksomhetsregel kan du kun slette en eksisterende Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopier lenke" + }, + "disabled": { + "message": "Deaktivert" + }, + "maxAccessCountReached": { + "message": "Maksimalt antall tilganger nådd" + }, + "expired": { + "message": "Utløpt" + }, + "pendingDeletion": { + "message": "Venter på sletting" + }, + "webAuthnAuthenticate": { + "message": "Autentiser WebAuthn" + }, + "hideEmail": { + "message": "Skjul min e-postadresse fra mottakere." + }, + "sendOptionsPolicyInEffect": { + "message": "En eller flere av organisasjons retningslinjer påvirker generatorinnstillingene dine." + }, + "emailVerificationRequired": { + "message": "E-postbekreftelse kreves" + }, + "emailVerificationRequiredDesc": { + "message": "Du må bekrefte E-postadressen din for å bruke denne funksjonen." + }, + "passwordPrompt": { + "message": "Forespørsel om hovedpassord på nytt" + }, + "passwordConfirmation": { + "message": "Superpassord bekreftelse" + }, + "passwordConfirmationDesc": { + "message": "Denne handlingen er beskyttet. For å fortsette, skriv inn hovedpassordet ditt på nytt for å verifisere din identitet." + }, + "updatedMasterPassword": { + "message": "Oppdaterte hovedpassordet" + }, + "updateMasterPassword": { + "message": "Oppdater hovedpassord" + }, + "updateMasterPasswordWarning": { + "message": "Hovedpassordet ditt ble nylig endret av en administrator i organisasjonen din. For å få tilgang til hvelvet, må du oppdatere det nå. Hvis du fortsetter, logges du ut av den nåværende økten, og du må logge på igjen. Aktive økter på andre enheter kan fortsette å være aktive i opptil én time." + }, + "hours": { + "message": "Timer" + }, + "minutes": { + "message": "Minutter" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Organisasjonens retningslinjer påvirker tidsavbruddet for hvelvet ditt. Maksimalt tillatt tidsavbrudd for hvelv er $HOURS$ time(r) og $MINUTES$ minutt(er)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Tidsavbruddet ditt for hvelvet overstiger begrensningene som er satt av organisasjonen din." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatisk registrering" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Denne organisasjonen har en bedriftsoppsettsregel som automatisk innrullerer deg i tilbakestilling av passord. Registrering vil tillate organisasjonsadministratorer å endre hovedpassordet ditt." + }, + "vaultExportDisabled": { + "message": "Hvelveksportering er skrudd av" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flere regler i organisasjonsoppsettet forhindrer deg i å eksportere ditt personlige hvelv." + }, + "addAccount": { + "message": "Legg til konto" + }, + "removeMasterPassword": { + "message": "Fjern hovedpassord" + }, + "removedMasterPassword": { + "message": "Hovedpassordet er fjernet." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ bruker SSO med en selvdrevet nøkkelserver. Et hovedpassord er ikke lenger nødvendig for å logge inn for medlemmer av denne organisasjonen.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Forlat organisasjon" + }, + "leaveOrganizationConfirmation": { + "message": "Er du sikker på at du vil forlate organisasjonen?" + }, + "leftOrganization": { + "message": "Du forlot organisasjonen." + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan ikke nå nøkkeltilkobleren. Prøv igjen senere." + }, + "lockAllVaults": { + "message": "Lås alle hvelv" + }, + "accountLimitReached": { + "message": "Ikke mer enn 5 kontoer kan være logget på samtidig." + }, + "accountPreferences": { + "message": "Preferanser" + }, + "appPreferences": { + "message": "Appinnstillinger (alle kontoer)" + }, + "accountSwitcherLimitReached": { + "message": "Kontogrense nådd. Logg ut av en konto for å legge til en annen en." + }, + "settingsTitle": { + "message": "Appinnstillinger for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Bytt konto" + }, + "options": { + "message": "Alternativer" + }, + "sessionTimeout": { + "message": "Økten ble tidsavbrutt. Vennligst gå tilbake og prøv å logge inn på nytt." + }, + "exportingPersonalVaultTitle": { + "message": "Eksporter personlig hvelv" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json new file mode 100644 index 0000000000..385877cf85 --- /dev/null +++ b/apps/desktop/src/locales/nl/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "Alle items" + }, + "favorites": { + "message": "Favorieten" + }, + "types": { + "message": "Categorieën" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Kaart" + }, + "typeIdentity": { + "message": "Identiteit" + }, + "typeSecureNote": { + "message": "Veilige notitie" + }, + "folders": { + "message": "Mappen" + }, + "collections": { + "message": "Verzamelingen" + }, + "searchVault": { + "message": "Kluis doorzoeken" + }, + "addItem": { + "message": "Item toevoegen" + }, + "shared": { + "message": "Gedeeld" + }, + "share": { + "message": "Delen" + }, + "moveToOrganization": { + "message": "Naar organisatie verplaatsen" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ verplaatst naar $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Kies een organisatie waarnaar je dit item wilt verplaatsen. Door het verplaatsen krijgt de organisatie de eigendomsrechten van het item. Je bent niet langer de directe eigenaar meer van het item als het is verplaatst." + }, + "attachments": { + "message": "Bijlagen" + }, + "viewItem": { + "message": "Item weergeven" + }, + "name": { + "message": "Naam" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nieuwe URI" + }, + "username": { + "message": "Gebruikersnaam" + }, + "password": { + "message": "Wachtwoord" + }, + "passphrase": { + "message": "Wachtwoordzin" + }, + "editItem": { + "message": "Item bewerken" + }, + "emailAddress": { + "message": "E-mailadres" + }, + "verificationCodeTotp": { + "message": "Verificatiecode (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notities" + }, + "customFields": { + "message": "Aangepaste velden" + }, + "launch": { + "message": "Starten" + }, + "copyValue": { + "message": "Waarde kopiëren", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimaliseren bij kopiëren naar klembord" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimaliseren bij het kopiëren van itemgegevens naar het klembord." + }, + "toggleVisibility": { + "message": "Zichtbaarheid wisselen" + }, + "toggleCollapse": { + "message": "Inklappen/uitklappen", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Naam kaarthouder" + }, + "number": { + "message": "Kaartnummer" + }, + "brand": { + "message": "Merk" + }, + "expiration": { + "message": "Vervaldatum" + }, + "securityCode": { + "message": "Veiligheidscode" + }, + "identityName": { + "message": "Identiteitsnaam" + }, + "company": { + "message": "Bedrijf" + }, + "ssn": { + "message": "Burgerservicenummer" + }, + "passportNumber": { + "message": "Paspoortnummer" + }, + "licenseNumber": { + "message": "Rijbewijsnummer" + }, + "email": { + "message": "E-mailadres" + }, + "phone": { + "message": "Telefoonnummer" + }, + "address": { + "message": "Adres" + }, + "premiumRequired": { + "message": "Premium is vereist" + }, + "premiumRequiredDesc": { + "message": "Voor deze functionaliteit heb je een Premium-abonnement nodig." + }, + "errorOccurred": { + "message": "Er is een fout opgetreden." + }, + "error": { + "message": "Fout" + }, + "january": { + "message": "januari" + }, + "february": { + "message": "februari" + }, + "march": { + "message": "maart" + }, + "april": { + "message": "april" + }, + "may": { + "message": "mei" + }, + "june": { + "message": "juni" + }, + "july": { + "message": "juli" + }, + "august": { + "message": "augustus" + }, + "september": { + "message": "september" + }, + "october": { + "message": "oktober" + }, + "november": { + "message": "november" + }, + "december": { + "message": "december" + }, + "ex": { + "message": "bijv.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Aanhef" + }, + "mr": { + "message": "Dhr." + }, + "mrs": { + "message": "Mevr." + }, + "ms": { + "message": "Mej." + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Vervalmaand" + }, + "expirationYear": { + "message": "Vervaljaar" + }, + "select": { + "message": "Selecteren" + }, + "other": { + "message": "Overig" + }, + "generatePassword": { + "message": "Wachtwoord genereren" + }, + "type": { + "message": "Categorie" + }, + "firstName": { + "message": "Voornaam" + }, + "middleName": { + "message": "Tweede naam" + }, + "lastName": { + "message": "Achternaam" + }, + "fullName": { + "message": "Volledige naam" + }, + "address1": { + "message": "Adres 1" + }, + "address2": { + "message": "Adres 2" + }, + "address3": { + "message": "Adres 3" + }, + "cityTown": { + "message": "Stad / gemeente" + }, + "stateProvince": { + "message": "Staat / provincie" + }, + "zipPostalCode": { + "message": "Postcode" + }, + "country": { + "message": "Land" + }, + "save": { + "message": "Opslaan" + }, + "cancel": { + "message": "Annuleren" + }, + "delete": { + "message": "Verwijderen" + }, + "favorite": { + "message": "Favoriet" + }, + "edit": { + "message": "Bewerken" + }, + "authenticatorKeyTotp": { + "message": "Authenticatiecode (TOTP)" + }, + "folder": { + "message": "Map" + }, + "newCustomField": { + "message": "Nieuw aangepast veld" + }, + "value": { + "message": "Waarde" + }, + "dragToSort": { + "message": "Slepen om te sorteren" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Verborgen" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Gekoppeld", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Gekoppelde waarde", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Verwijderen" + }, + "nameRequired": { + "message": "Naam is vereist." + }, + "addedItem": { + "message": "Item is toegevoegd" + }, + "editedItem": { + "message": "Item is bewerkt" + }, + "deleteItem": { + "message": "Item verwijderen" + }, + "deleteFolder": { + "message": "Map verwijderen" + }, + "deleteAttachment": { + "message": "Bijlage verwijderen" + }, + "deleteItemConfirmation": { + "message": "Weet je zeker dat je dit naar de prullenbak wilt verplaatsen?" + }, + "deletedItem": { + "message": "Item is verwijderd" + }, + "overwritePasswordConfirmation": { + "message": "Weet je zeker dat je het huidige wachtwoord wilt overschrijven?" + }, + "overwriteUsername": { + "message": "Gebruikersnaam overschrijven" + }, + "overwriteUsernameConfirmation": { + "message": "Weet je zeker dat je de huidige gebruikersnaam wilt overschrijven?" + }, + "noneFolder": { + "message": "Geen map", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Map toevoegen" + }, + "editFolder": { + "message": "Map bewerken" + }, + "regeneratePassword": { + "message": "Opnieuw genereren" + }, + "copyPassword": { + "message": "Wachtwoord kopiëren" + }, + "copyUri": { + "message": "URI kopiëren" + }, + "copyVerificationCodeTotp": { + "message": "Verificatiecode kopiëren (TOTP)" + }, + "length": { + "message": "Lengte" + }, + "numWords": { + "message": "Aantal woorden" + }, + "wordSeparator": { + "message": "Scheidingsteken" + }, + "capitalize": { + "message": "Beginhoofdletters", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Cijfer toevoegen" + }, + "close": { + "message": "Sluiten" + }, + "minNumbers": { + "message": "Minimum aantal cijfers" + }, + "minSpecial": { + "message": "Minimum aantal speciale tekens", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Dubbelzinnige tekens vermijden" + }, + "searchCollection": { + "message": "Verzameling doorzoeken" + }, + "searchFolder": { + "message": "Map doorzoeken" + }, + "searchFavorites": { + "message": "Favorieten doorzoeken" + }, + "searchType": { + "message": "Categorie doorzoeken", + "description": "Search item type" + }, + "newAttachment": { + "message": "Nieuwe bijlage toevoegen" + }, + "deletedAttachment": { + "message": "Bijlage is verwijderd" + }, + "deleteAttachmentConfirmation": { + "message": "Weet je zeker dat je deze bijlage wilt verwijderen?" + }, + "attachmentSaved": { + "message": "De bijlage is opgeslagen." + }, + "file": { + "message": "Bestand" + }, + "selectFile": { + "message": "Selecteer een bestand." + }, + "maxFileSize": { + "message": "Maximale bestandsgrootte is 500 MB." + }, + "updateKey": { + "message": "Je kunt deze functie pas gebruiken als je je encryptiesleutel bijwerkt." + }, + "editedFolder": { + "message": "Map is bewerkt" + }, + "addedFolder": { + "message": "Map is toegevoegd" + }, + "deleteFolderConfirmation": { + "message": "Weet je zeker dat je deze map wilt verwijderen?" + }, + "deletedFolder": { + "message": "Map is verwijderd" + }, + "loginOrCreateNewAccount": { + "message": "Log in of maak een nieuw account aan om toegang te krijgen tot je beveiligde kluis." + }, + "createAccount": { + "message": "Account aanmaken" + }, + "logIn": { + "message": "Inloggen" + }, + "submit": { + "message": "Opslaan" + }, + "masterPass": { + "message": "Hoofdwachtwoord" + }, + "masterPassDesc": { + "message": "Het hoofdwachtwoord is het wachtwoord waarmee je toegang krijgt tot je beveiligde kluis. Het is belangrijk dat je het hoofdwachtwoord niet vergeet, want er is geen manier om het te herstellen." + }, + "masterPassHintDesc": { + "message": "Een hoofdwachtwoordhint kan je helpen je wachtwoord te herinneren als je het vergeten bent." + }, + "reTypeMasterPass": { + "message": "Hoofdwachtwoord opnieuw invoeren" + }, + "masterPassHint": { + "message": "Hoofdwachtwoordhint (optioneel)" + }, + "settings": { + "message": "Instellingen" + }, + "passwordHint": { + "message": "Wachtwoordhint" + }, + "enterEmailToGetHint": { + "message": "Voer het e-mailadres van je account in om je hoofdwachtwoordhint te ontvangen." + }, + "getMasterPasswordHint": { + "message": "Hoofdwachtwoordhint opvragen" + }, + "emailRequired": { + "message": "E-mailadres vereist." + }, + "invalidEmail": { + "message": "Ongeldig e-mailadres." + }, + "masterPassRequired": { + "message": "Hoofdwachtwoord vereist." + }, + "masterPassLength": { + "message": "Het hoofdwachtwoord moet minimaal 8 tekens lang zijn." + }, + "masterPassDoesntMatch": { + "message": "De hoofdwachtwoorden komen niet overeen." + }, + "newAccountCreated": { + "message": "Je nieuwe account is aangemaakt! Je kunt nu inloggen." + }, + "masterPassSent": { + "message": "We hebben je een e-mail gestuurd met je hoofdwachtwoordhint." + }, + "unexpectedError": { + "message": "Er is een onverwachte fout opgetreden." + }, + "itemInformation": { + "message": "Item" + }, + "noItemsInList": { + "message": "Er zijn geen items om weer te geven." + }, + "sendVerificationCode": { + "message": "Stuur een verificatiecode naar je e-mail" + }, + "sendCode": { + "message": "Code versturen" + }, + "codeSent": { + "message": "Code verstuurd" + }, + "verificationCode": { + "message": "Verificatiecode" + }, + "confirmIdentity": { + "message": "Bevestig je identiteit om door te gaan." + }, + "verificationCodeRequired": { + "message": "Verificatiecode vereist." + }, + "invalidVerificationCode": { + "message": "Ongeldige verificatiecode" + }, + "continue": { + "message": "Doorgaan" + }, + "enterVerificationCodeApp": { + "message": "Voer de 6-cijferige verificatiecode uit je authenticatie-app in." + }, + "enterVerificationCodeEmail": { + "message": "Voer de 6-cijferige verificatiecode in die via e-mail is verstuurd naar $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-mail met verificatiecode is verzonden naar $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Mijn gegevens onthouden" + }, + "sendVerificationCodeEmailAgain": { + "message": "E-mail met verificatiecode opnieuw versturen" + }, + "useAnotherTwoStepMethod": { + "message": "Gebruik een andere methode voor tweestapsaanmelding" + }, + "insertYubiKey": { + "message": "Plaats je YubiKey in de USB-poort van je computer en druk op de knop." + }, + "insertU2f": { + "message": "Plaats je beveilingssleutel in de USB-poort van je computer. Als het een knop heeft, druk deze dan in." + }, + "recoveryCodeDesc": { + "message": "Ben je de toegang tot al je tweestapsaanbieders verloren? Gebruik dan je herstelcode om alle tweestapsaanbieders op je account uit te schakelen." + }, + "recoveryCodeTitle": { + "message": "Herstelcode" + }, + "authenticatorAppTitle": { + "message": "Authenticatie-app" + }, + "authenticatorAppDesc": { + "message": "Gebruik een authenticatie-app (zoals Authy of Google Authenticator) om tijdgebaseerde authenticatiecodes te genereren.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP-beveiligingssleutel" + }, + "yubiKeyDesc": { + "message": "Gebruik een YubiKey om toegang te krijgen tot je account. Werkt met YubiKey 4, 4 Nano, 4C en Neo-apparaten." + }, + "duoDesc": { + "message": "Verificatie met Duo Security middels de Duo Mobile-app, sms, spraakoproep of een U2F-beveiligingssleutel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verificatie met Duo Security middels de Duo Mobile-app, sms, spraakoproep of een U2F-beveiligingssleutel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Gebruik een WebAuthn-beveilingssleutel om toegang te krijgen tot je account." + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Je ontvangt verificatiecodes via e-mail." + }, + "loginUnavailable": { + "message": "Login niet beschikbaar" + }, + "noTwoStepProviders": { + "message": "Dit account heeft tweestapsaanmelding ingeschakeld, maar dit apparaat ondersteunt geen van de geconfigureerde aanbieders." + }, + "noTwoStepProviders2": { + "message": "Voeg aanvullende aanbieders toe die beter worden ondersteund op verschillende apparaten (zoals een authenticator app)." + }, + "twoStepOptions": { + "message": "Opties voor tweestapsaanmelding" + }, + "selfHostedEnvironment": { + "message": "Zelfgehoste omgeving" + }, + "selfHostedEnvironmentFooter": { + "message": "Geef de basis-URL van jouw zelfgehoste Bitwarden-installatie." + }, + "customEnvironment": { + "message": "Aangepaste omgeving" + }, + "customEnvironmentFooter": { + "message": "Voor gevorderde gebruikers. Je kunt de basis-URL van elke dienst afzonderlijk instellen." + }, + "baseUrl": { + "message": "Server-URL" + }, + "apiUrl": { + "message": "API server-URL" + }, + "webVaultUrl": { + "message": "Webkluis server-URL" + }, + "identityUrl": { + "message": "Identiteitsserver-URL" + }, + "notificationsUrl": { + "message": "Meldingenserver-URL" + }, + "iconsUrl": { + "message": "Pictogrammenserver-URL" + }, + "environmentSaved": { + "message": "De omgevings-URL's zijn opgeslagen." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nee" + }, + "overwritePassword": { + "message": "Wachtwoord overschrijven" + }, + "learnMore": { + "message": "Meer informatie" + }, + "featureUnavailable": { + "message": "Functionaliteit niet beschikbaar" + }, + "loggedOut": { + "message": "Uitgelogd" + }, + "loginExpired": { + "message": "Je inlogsessie is verlopen." + }, + "logOutConfirmation": { + "message": "Weet je zeker dat je wilt uitloggen?" + }, + "logOut": { + "message": "Uitloggen" + }, + "addNewLogin": { + "message": "Nieuwe login" + }, + "addNewItem": { + "message": "Nieuw item" + }, + "addNewFolder": { + "message": "Nieuwe map" + }, + "view": { + "message": "Beeld" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Laden..." + }, + "lockVault": { + "message": "Kluis vergrendelen" + }, + "passwordGenerator": { + "message": "Wachtwoordgenerator" + }, + "contactUs": { + "message": "Contact opnemen" + }, + "getHelp": { + "message": "Hulp vragen" + }, + "fileBugReport": { + "message": "Rapporteer een fout (bug)" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Volg ons" + }, + "syncVault": { + "message": "Kluis synchroniseren" + }, + "changeMasterPass": { + "message": "Hoofdwachtwoord wijzigen" + }, + "changeMasterPasswordConfirmation": { + "message": "Je kunt je hoofdwachtwoord wijzigen in de kluis op bitwarden.com. Wil je de website nu bezoeken?" + }, + "fingerprintPhrase": { + "message": "Vingerafdrukzin", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Vingerafdrukzin van je account", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ga naar de webkluis" + }, + "getMobileApp": { + "message": "Download de mobiele app" + }, + "getBrowserExtension": { + "message": "Download de browserextensie" + }, + "syncingComplete": { + "message": "Synchronisatie voltooid" + }, + "syncingFailed": { + "message": "Synchronisatie mislukt" + }, + "yourVaultIsLocked": { + "message": "Je kluis is vergrendeld. Voer je hoofdwachtwoord in om door te gaan." + }, + "unlock": { + "message": "Ontgrendelen" + }, + "loggedInAsOn": { + "message": "Aangemeld als $EMAIL$ op $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ongeldig hoofdwachtwoord" + }, + "twoStepLoginConfirmation": { + "message": "Tweestapsaanmelding beschermt je account door je inlogpoging te bevestigen met een ander apparaat zoals een beveiligingssleutel, authenticatie-app, SMS, spraakoproep of e-mail. Je kunt Tweestapsaanmelding inschakelen in de webkluis op bitwarden.com. Wil je de website nu bezoeken?" + }, + "twoStepLogin": { + "message": "Tweestapsaanmelding" + }, + "vaultTimeout": { + "message": "Time-out van de kluis" + }, + "vaultTimeoutDesc": { + "message": "Stel de time-out van de kluis en de bijbehorende actie in." + }, + "immediately": { + "message": "Onmiddellijk" + }, + "tenSeconds": { + "message": "10 seconden" + }, + "twentySeconds": { + "message": "20 seconden" + }, + "thirtySeconds": { + "message": "30 seconden" + }, + "oneMinute": { + "message": "1 minuut" + }, + "twoMinutes": { + "message": "2 minuten" + }, + "fiveMinutes": { + "message": "5 minuten" + }, + "fifteenMinutes": { + "message": "15 minuten" + }, + "thirtyMinutes": { + "message": "30 minuten" + }, + "oneHour": { + "message": "1 uur" + }, + "fourHours": { + "message": "4 uur" + }, + "onIdle": { + "message": "Bij systeeminactiviteit" + }, + "onSleep": { + "message": "Bij slaapmodus" + }, + "onLocked": { + "message": "Bij systeemvergrendeling" + }, + "onRestart": { + "message": "Bij herstart" + }, + "never": { + "message": "Nooit" + }, + "security": { + "message": "Beveiliging" + }, + "clearClipboard": { + "message": "Klembord wissen", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Gekopieerde waarden automatisch van het klembord wissen.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Websitepictogrammen uitschakelen" + }, + "disableFaviconDesc": { + "message": "Websitepictogrammen geven een herkenbare afbeelding naast elk item in je kluis." + }, + "enableMinToTray": { + "message": "Minimaliseren naar systeemvak" + }, + "enableMinToTrayDesc": { + "message": "Wanneer het venster wordt geminimaliseerd, een pictogram in het systeemvak weergeven." + }, + "enableMinToMenuBar": { + "message": "Minimaliseren naar menubalk" + }, + "enableMinToMenuBarDesc": { + "message": "Bij het minimaliseren van het venster, een pictogram in de menubalk weergeven." + }, + "enableCloseToTray": { + "message": "Sluiten naar systeemvak" + }, + "enableCloseToTrayDesc": { + "message": "Bij het sluiten van het venster, een pictogram in het systeemvak weergeven." + }, + "enableCloseToMenuBar": { + "message": "Menubalk sluiten" + }, + "enableCloseToMenuBarDesc": { + "message": "Bij het sluiten van het venster, een pictogram in de menubalk weergeven." + }, + "enableTray": { + "message": "Systeemvakpictogram inschakelen" + }, + "enableTrayDesc": { + "message": "Altijd een pictogram in het systeemvak weergeven." + }, + "startToTray": { + "message": "Opstarten als systeemvakpictogram" + }, + "startToTrayDesc": { + "message": "Wanneer de applicatie voor het eerst wordt gestart, alleen een pictogram in het systeemvak weergeven." + }, + "startToMenuBar": { + "message": "Menubalk starten" + }, + "startToMenuBarDesc": { + "message": "Wanneer de applicatie voor het eerst is gestart, alleen een pictogram weergeven in de menubalk." + }, + "openAtLogin": { + "message": "Automatisch starten bij inloggen" + }, + "openAtLoginDesc": { + "message": "Bitwarden-desktopapplicatie automatisch starten bij inloggen." + }, + "alwaysShowDock": { + "message": "Altijd laten zien in het dock" + }, + "alwaysShowDockDesc": { + "message": "Toon het Bitwarden-pictogram in het dock, zelfs wanneer geminimaliseerd in de menubalk." + }, + "confirmTrayTitle": { + "message": "Uitschakelen van het systeemvakpictogram bevestigen" + }, + "confirmTrayDesc": { + "message": "Het uitschakelen van deze instelling zal ook alle andere instellingen van het systeemvakpictogram uitschakelen." + }, + "language": { + "message": "Taal" + }, + "languageDesc": { + "message": "De taal van de applicatie wijzigen. Werkt pas na herstarten." + }, + "theme": { + "message": "Thema" + }, + "themeDesc": { + "message": "Het kleurenthema van de applicatie wijzigen." + }, + "dark": { + "message": "Donker", + "description": "Dark color" + }, + "light": { + "message": "Licht", + "description": "Light color" + }, + "copy": { + "message": "Kopiëren", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Controleren op updates" + }, + "version": { + "message": "Versie $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Bitwarden opnieuw starten om bij te werken" + }, + "restartToUpdateDesc": { + "message": "Versie $VERSION_NUM$ is klaar voor installatie. Je moet Bitwarden opnieuw opstarten om de installatie af te ronden. Wil je nu opnieuw opstarten en bijwerken?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update beschikbaar" + }, + "updateAvailableDesc": { + "message": "Er is een update gevonden. Wil je deze nu downloaden?" + }, + "restart": { + "message": "Applicatie herstarten" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "Er zijn momenteel geen updates beschikbaar. Je gebruikt de laatste versie." + }, + "updateError": { + "message": "Fout bij het bijwerken" + }, + "unknown": { + "message": "Onbekend" + }, + "copyUsername": { + "message": "Gebruikersnaam kopiëren" + }, + "copyNumber": { + "message": "Nummer kopiëren", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Beveiligingscode kopiëren", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium-abonnement" + }, + "premiumManage": { + "message": "Abonnement beheren" + }, + "premiumManageAlert": { + "message": "Je kunt je abonnement aanpassen in de webkluis op bitwarden.com. Wil je de website nu bezoeken?" + }, + "premiumRefresh": { + "message": "Abonnement vernieuwen" + }, + "premiumNotCurrentMember": { + "message": "Je bent momenteel geen Premium-lid." + }, + "premiumSignUpAndGet": { + "message": "Meld je aan voor een Premium-abonnement en krijg:" + }, + "premiumSignUpStorage": { + "message": "1 GB versleutelde opslag voor bijlagen." + }, + "premiumSignUpTwoStep": { + "message": "Extra opties voor tweestapsaanmelding zoals YubiKey, FIDO U2F en Duo." + }, + "premiumSignUpReports": { + "message": "Rapportage op wachtwoordhygiëne, gezondheid van je account en gegevensinbreuk om je kluis veilig te houden." + }, + "premiumSignUpTotp": { + "message": "TOTP-verificatiecodegenerator (2FA) voor logins in je kluis." + }, + "premiumSignUpSupport": { + "message": "Klantondersteuning met hoge prioriteit." + }, + "premiumSignUpFuture": { + "message": "Alle toekomstige Premium-functionaliteiten. Binnenkort meer!" + }, + "premiumPurchase": { + "message": "Premium aanschaffen" + }, + "premiumPurchaseAlert": { + "message": "Je kunt een Premium-abonnement aanschaffen in de webkluis op bitwarden.com. Wil je de website nu bezoeken?" + }, + "premiumCurrentMember": { + "message": "Je bent Premium-lid!" + }, + "premiumCurrentMemberThanks": { + "message": "Bedankt voor het ondersteunen van Bitwarden." + }, + "premiumPrice": { + "message": "Dit alles voor slechts $PRICE$ per jaar!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Bijwerken voltooid" + }, + "passwordHistory": { + "message": "Geschiedenis" + }, + "clear": { + "message": "Wissen", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Er zijn geen wachtwoorden om weer te geven." + }, + "undo": { + "message": "Ongedaan maken" + }, + "redo": { + "message": "Opnieuw" + }, + "cut": { + "message": "Knippen", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Plakken", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Alles selecteren" + }, + "zoomIn": { + "message": "Inzoomen" + }, + "zoomOut": { + "message": "Uitzoomen" + }, + "resetZoom": { + "message": "Zoom herstellen" + }, + "toggleFullScreen": { + "message": "Volledig scherm aan/uit" + }, + "reload": { + "message": "Opnieuw laden" + }, + "toggleDevTools": { + "message": "Ontwikkelaarsgereedschap in-/uitschakelen" + }, + "minimize": { + "message": "Minimaliseren", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoomen" + }, + "bringAllToFront": { + "message": "Alles naar voorgrond brengen", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Over Bitwarden" + }, + "services": { + "message": "Diensten" + }, + "hideBitwarden": { + "message": "Bitwarden verbergen" + }, + "hideOthers": { + "message": "Overige verbergen" + }, + "showAll": { + "message": "Alles weergeven" + }, + "quitBitwarden": { + "message": "Bitwarden afsluiten" + }, + "valueCopied": { + "message": "$VALUE$ gekopieerd", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Venster" + }, + "checkPassword": { + "message": "Controleer of wachtwoord is gelekt." + }, + "passwordExposed": { + "message": "Dit wachtwoord is $VALUE$ keer gelekt. Je zou het moeten veranderen.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Dit wachtwoord is niet gevonden in de bekende gegevenslekken. Het kan veilig gebruikt worden." + }, + "baseDomain": { + "message": "Basisdomein", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domeinnaam", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Hostnaam", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Begint met" + }, + "regEx": { + "message": "Reguliere expressie", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Overeenkomstdetectie", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standaard overeenkomstdetectie", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Opties schakelen" + }, + "organization": { + "message": "Organisatie", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Standaard" + }, + "exit": { + "message": "Afsluiten" + }, + "showHide": { + "message": "Weergeven/verbergen", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Verbergen naar het systeemvak" + }, + "alwaysOnTop": { + "message": "Altijd op de voorgrond", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Bijgewerkt", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Wachtwoord bijgewerkt", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Kluis exporteren" + }, + "fileFormat": { + "message": "Bestandsindeling" + }, + "warning": { + "message": "WAARSCHUWING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Kluisexport bevestigen" + }, + "exportWarningDesc": { + "message": "Deze export bevat jouw kluisgegevens in een niet-versleutelde opmaak. Je moet het geëxporteerde bestand niet opslaan of verzenden over onbeveiligde kanalen (zoals e-mail). Verwijder het exportbestand direct na gebruik." + }, + "encExportKeyWarningDesc": { + "message": "Deze export versleutelt je gegevens met de encryptiesleutel van je account. Als je je encryptiesleutel verandert moet je opnieuw exporteren, omdat je deze export dan niet meer kunt ontcijferen." + }, + "encExportAccountWarningDesc": { + "message": "Encryptiesleutels zijn uniek voor elk Bitwarden-gebruikersaccount, je kun kunt een versleutelde niet in een ander account importeren." + }, + "noOrganizationsList": { + "message": "Je behoort niet tot een organisatie. Via organisaties deel je je items veilig met andere gebruikers." + }, + "noCollectionsInList": { + "message": "Er zijn geen verzamelingen om weer te geven." + }, + "ownership": { + "message": "Eigendom" + }, + "whoOwnsThisItem": { + "message": "Wie is eigenaar van dit item?" + }, + "strong": { + "message": "Sterk", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Goed", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Zwak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Zwak hoofdwachtwoord" + }, + "weakMasterPasswordDesc": { + "message": "Je hebt een zwak hoofdwachtwoord gekozen. Gebruik een sterk hoofdwachtwoord (of wachtwoordzin) om jouw Bitwarden-account goed te beschermen. Weet je zeker dat je dit hoofdwachtwoord wilt gebruiken?" + }, + "pin": { + "message": "PIN-code", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Ontgrendelen met PIN" + }, + "setYourPinCode": { + "message": "Stel je PIN-code in voor het ontgrendelen van Bitwarden. Je PIN-code wordt opnieuw ingesteld als je je ooit volledig afmeldt bij de applicatie." + }, + "pinRequired": { + "message": "PIN-code vereist." + }, + "invalidPin": { + "message": "Ongeldige PIN-code." + }, + "unlockWithWindowsHello": { + "message": "Ontgrendelen met Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verifiëren voor Bitwarden." + }, + "unlockWithTouchId": { + "message": "Ontgrendelen met Touch ID" + }, + "touchIdConsentMessage": { + "message": "ontgrendel je kluis" + }, + "noAutoPromptWindowsHello": { + "message": "Bij het opstarten niet om Windows Hello vragen." + }, + "noAutoPromptTouchId": { + "message": "Bij het opstarten niet om Touch ID vragen." + }, + "lockWithMasterPassOnRestart": { + "message": "Bij herstart vergrendelen met hoofdwachtwoord" + }, + "preferences": { + "message": "Voorkeuren" + }, + "enableMenuBar": { + "message": "Pictogram in de taakbalk" + }, + "enableMenuBarDesc": { + "message": "Altijd een pictogram in de taakbalk weergeven." + }, + "hideToMenuBar": { + "message": "Verbergen naar de taakbalk" + }, + "selectOneCollection": { + "message": "Je moet tenminste één verzameling selecteren." + }, + "premiumUpdated": { + "message": "Je bent opgewaardeerd naar Premium." + }, + "restore": { + "message": "Terugzetten" + }, + "premiumManageAlertAppStore": { + "message": "Je kunt je abonnement beheren vanuit de App Store. Wil je de App Store nu bezoeken?" + }, + "legal": { + "message": "Juridisch", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Algemene gebruiksvoorwaarden" + }, + "privacyPolicy": { + "message": "Privacybeleid" + }, + "unsavedChangesConfirmation": { + "message": "Weet je zeker dat je wilt afsluiten? Als je nu afsluiten, gaan je laatste wijzigingen verloren." + }, + "unsavedChangesTitle": { + "message": "Niet-opgeslagen wijzigingen" + }, + "clone": { + "message": "Dupliceren" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen heeft invloed op de instellingen van je generator." + }, + "vaultTimeoutAction": { + "message": "Actie bij time-out" + }, + "vaultTimeoutActionLockDesc": { + "message": "Om toegang te krijgen tot een vergrendelde kluis moet het hoofdwachtwoord opnieuw worden ingevoerd." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Om toegang te krijgen tot een uitgelogde kluis te krijgen moet je opnieuw inloggen." + }, + "lock": { + "message": "Vergrendelen", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Prullenbak", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Prullenbak doorzoeken" + }, + "permanentlyDeleteItem": { + "message": "Item definitief verwijderen" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Weet je zeker dat je dit item definitief wilt verwijderen?" + }, + "permanentlyDeletedItem": { + "message": "Definitief verwijderd item" + }, + "restoreItem": { + "message": "Item herstellen" + }, + "restoreItemConfirmation": { + "message": "Weet je zeker dat je dit item wilt herstellen?" + }, + "restoredItem": { + "message": "Hersteld item" + }, + "permanentlyDelete": { + "message": "Definitief verwijderen" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Uitloggen ontneemt je de toegang tot je kluis en vereist online authenticatie na een periode van time-out. Weet je zeker dat je deze instelling wilt gebruiken?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bevestiging actie bij time-out" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Hoofdwachtwoord instellen" + }, + "ssoCompleteRegistration": { + "message": "Voor het inloggen met SSO moet je een hoofdwachtwoord instellen voor toegang tot en bescherming van je kluis." + }, + "newMasterPass": { + "message": "Nieuw hoofdwachtwoord" + }, + "confirmNewMasterPass": { + "message": "Nieuw hoofdwachtwoord bevestigen" + }, + "masterPasswordPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen stelt de volgende eisen aan je hoofdwachtwoord:" + }, + "policyInEffectMinComplexity": { + "message": "Minimale complexiteitsscore van $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimale lengte van $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Bevat een of meer hoofdletters" + }, + "policyInEffectLowercase": { + "message": "Bevat een of meer kleine letters" + }, + "policyInEffectNumbers": { + "message": "Bevat een of meer cijfers" + }, + "policyInEffectSpecial": { + "message": "Bevat een of meer van de volgende speciale tekens $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Je nieuwe hoofdwachtwoord voldoet niet aan de beleidseisen." + }, + "acceptPolicies": { + "message": "Door dit vakje aan te vinken, ga je akkoord met het volgende:" + }, + "acceptPoliciesError": { + "message": "Algemene voorwaarden en privacybeleid zijn nog niet erkend." + }, + "enableBrowserIntegration": { + "message": "Browserintegratie inschakelen" + }, + "enableBrowserIntegrationDesc": { + "message": "Browserintegratie wordt gebruikt voor biometrie in de browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browserintegratie niet ondersteund" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Helaas wordt browserintegratie momenteel alleen ondersteund in de Mac App Store-versie." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browserintegratie niet ondersteund" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Helaas wordt browserintegratie momenteel niet ondersteund in de Windows Store-versie." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Vereis verificatie voor browserintegratie" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Schakel een extra beveiligingsniveau in door een vingerafdrukzin te vereisen bij het verbinden van je desktop en browser. Wanneer ingeschakeld moet je iedere verbinding verifiëren." + }, + "approve": { + "message": "Goedkeuren" + }, + "verifyBrowserTitle": { + "message": "Browserverbinding verifiëren" + }, + "verifyBrowserDesc": { + "message": "Verzeker je ervan dat de getoonde vingerafdruk hetzelfde is als de vingerafdruk in de browserextensie." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrie niet ingeschakeld" + }, + "biometricsNotEnabledDesc": { + "message": "Voor browserbiometrie moet je eerst desktopbiometrie inschakelen in de instellingen." + }, + "personalOwnershipSubmitError": { + "message": "Wegens bedrijfsbeleid mag je geen wachtwoorden opslaan in je persoonlijke kluis. Verander het eigenaarschap naar een organisatie en kies uit een van de beschikbare collecties." + }, + "hintEqualsPassword": { + "message": "Je wachtwoordhint moet anders zijn dan je wachtwoord." + }, + "personalOwnershipPolicyInEffect": { + "message": "Een organisatiebeleid heeft invloed op je eigendomsopties." + }, + "allSends": { + "message": "Alle Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Bestand" + }, + "sendTypeText": { + "message": "Tekst" + }, + "searchSends": { + "message": "Sends zoeken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send bewerken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mijn kluis" + }, + "text": { + "message": "Tekst" + }, + "deletionDate": { + "message": "Verwijderingsdatum" + }, + "deletionDateDesc": { + "message": "Deze Send wordt op de aangegeven datum en tijd definitief verwijderd.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Vervaldatum" + }, + "expirationDateDesc": { + "message": "Als dit is ingesteld verloopt deze Send op een specifieke datum en tijd.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum toegangsaantal" + }, + "maxAccessCountDesc": { + "message": "Als dit is ingesteld kunnen gebruikers deze Send niet meer benaderen zodra het maximale aantal toegang is bereikt.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Huidige toegangsaantal" + }, + "disableSend": { + "message": "Schakel deze Send uit zodat niemand hem kan benaderen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Vereis optioneel een wachtwoord voor gebruikers om toegang te krijgen tot deze Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Privénotities over deze Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send-link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send-link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Verberg de tekst standaard bij het gebruiken van de Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send aangemaakt", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send bewerkt", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send verwijderd", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nieuw wachtwoord" + }, + "whatTypeOfSend": { + "message": "Wat voor soort Send is dit?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send aanmaken", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "De tekst die je wilt versturen." + }, + "sendFileDesc": { + "message": "Het bestand dat je wilt versturen." + }, + "days": { + "message": "$DAYS$ dagen", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dag" + }, + "custom": { + "message": "Aangepast" + }, + "deleteSendConfirmation": { + "message": "Weet je zeker dat je deze Send wilt verwijderen?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Send-link naar klembord kopiëren", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopieer de link om deze Share te delen bij het opslaan naar mijn klembord." + }, + "sendDisabled": { + "message": "Send uitgeschakeld", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Als gevolg van een ondernemingsbeleid kun je alleen een bestaande Send verwijderen.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Link kopiëren" + }, + "disabled": { + "message": "Uitgeschakeld" + }, + "maxAccessCountReached": { + "message": "Maximum aantal keren benaderd" + }, + "expired": { + "message": "Verlopen" + }, + "pendingDeletion": { + "message": "Wordt verwijderd" + }, + "webAuthnAuthenticate": { + "message": "Authenticeer WebAuthn" + }, + "hideEmail": { + "message": "Verberg mijn e-mailadres voor ontvangers." + }, + "sendOptionsPolicyInEffect": { + "message": "Een of meer organisatiebeleidseisen heeft invloed op de mogelijkheden van je Send." + }, + "emailVerificationRequired": { + "message": "E-mailverificatie vereist" + }, + "emailVerificationRequiredDesc": { + "message": "Je moet je e-mailadres verifiëren om deze functionaliteit te gebruiken." + }, + "passwordPrompt": { + "message": "Hoofdwachtwoord opnieuw vragen" + }, + "passwordConfirmation": { + "message": "Hoofdwachtwoord bevestigen" + }, + "passwordConfirmationDesc": { + "message": "Deze actie is beveiligd. Voer je hoofdwachtwoord opnieuw in om je identiteit vast te stellen en door te gaan." + }, + "updatedMasterPassword": { + "message": "Hoofdwachtwoord bijgewerkt" + }, + "updateMasterPassword": { + "message": "Hoofdwachtwoord bijgewerken" + }, + "updateMasterPasswordWarning": { + "message": "Je hoofdwachtwoord is onlangs veranderd door een beheerder in jouw organisatie. Om toegang te krijgen tot de kluis, moet je deze nu bijwerken. Doorgaan zal je huidige sessie uitloggen, waarna je opnieuw moet inloggen. Actieve sessies op andere apparaten blijven mogelijk nog een uur actief." + }, + "hours": { + "message": "Uren" + }, + "minutes": { + "message": "Minuten" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Het beleid van je organisatie heeft invloed op de time-out van je kluis. De maximaal toegestane Kluis Time-out is $HOURS$ uur en $MINUTES$ minuten", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Je kluis time-out is hoger dan het maximum van jouw organisatie." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatische inschrijving" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Deze organisatie heeft een ondernemingsbeleid dat je automatisch inschrijft bij het resetten van je wachtwoord. Inschrijving stelt organisatiebeheerders in staat om je hoofdwachtwoord te wijzigen." + }, + "vaultExportDisabled": { + "message": "Kluis exporteren uitgeschakeld" + }, + "personalVaultExportPolicyInEffect": { + "message": "Organisatiebeleid voorkomt dat je je persoonlijke kluis exporteert." + }, + "addAccount": { + "message": "Account toevoegen" + }, + "removeMasterPassword": { + "message": "Hoofdwachtwoord verwijderen" + }, + "removedMasterPassword": { + "message": "Hoofdwachtwoord verwijderd." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ gebruikt SSO met een zelf gehoste sleutelserver. Leden van deze organisatie kunnen inloggen zonder hoofdwachtwoord.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Organisatie verlaten" + }, + "leaveOrganizationConfirmation": { + "message": "Weet je zeker dat je deze organisatie wilt verlaten?" + }, + "leftOrganization": { + "message": "Je hebt de organisatie verlaten." + }, + "ssoKeyConnectorUnavailable": { + "message": "Kan de sleutelconnector niet bereiken, probeer het later opnieuw." + }, + "lockAllVaults": { + "message": "Alle kluizen vergrendelen" + }, + "accountLimitReached": { + "message": "Er mogen niet meer dan 5 accounts tegelijkertijd ingelogd zijn." + }, + "accountPreferences": { + "message": "Voorkeuren" + }, + "appPreferences": { + "message": "App-instellingen (alle accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Limiet van het aantal accounts bereikt. Log een account uit voor het toevoegen van een andere." + }, + "settingsTitle": { + "message": "App-instellingen voor $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Account wisselen" + }, + "options": { + "message": "Opties" + }, + "sessionTimeout": { + "message": "Je sessie is verlopen. Ga terug en probeer opnieuw in te loggen." + }, + "exportingPersonalVaultTitle": { + "message": "Persoonlijke kluis exporteren" + }, + "exportingPersonalVaultDescription": { + "message": "Exporteert alleen de persoonlijke kluis-items gerelateerd aan $EMAIL$. Geen kluis-items van de organisatie.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Wat wil je genereren?" + }, + "passwordType": { + "message": "Type wachtwoord" + }, + "regenerateUsername": { + "message": "Gebruikersnaam opnieuw genereren" + }, + "generateUsername": { + "message": "Gebruikersnamen genereren" + }, + "usernameType": { + "message": "Type gebruikersnaam" + }, + "plusAddressedEmail": { + "message": "E-mailadres-met-plus" + }, + "plusAddressedEmailDesc": { + "message": "Gebruik de subadressen van je e-mailprovider." + }, + "catchallEmail": { + "message": "Catch-all e-mail" + }, + "catchallEmailDesc": { + "message": "Gebruik de catch-all inbox van je domein." + }, + "random": { + "message": "Willekeurig" + }, + "randomWord": { + "message": "Willekeurig woord" + }, + "websiteName": { + "message": "Websitenaam" + }, + "service": { + "message": "Dienst" + } +} diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json new file mode 100644 index 0000000000..1b909d5de4 --- /dev/null +++ b/apps/desktop/src/locales/nn/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filters" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "Favorites" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "Login" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identity" + }, + "typeSecureNote": { + "message": "Secure Note" + }, + "folders": { + "message": "Folders" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "Name" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "Username" + }, + "password": { + "message": "Password" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "Email Address" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "Copy Value", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "Number" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "Expiration" + }, + "securityCode": { + "message": "Security Code" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "Company" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Phone" + }, + "address": { + "message": "Address" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "Error" + }, + "january": { + "message": "January" + }, + "february": { + "message": "February" + }, + "march": { + "message": "March" + }, + "april": { + "message": "April" + }, + "may": { + "message": "May" + }, + "june": { + "message": "June" + }, + "july": { + "message": "July" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "October" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "Country" + }, + "save": { + "message": "Save" + }, + "cancel": { + "message": "Cancel" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "Favorite" + }, + "edit": { + "message": "Edit" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remove" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "No Folder", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Add Folder" + }, + "editFolder": { + "message": "Edit Folder" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "Copy Password" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "Close" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "Search Folder" + }, + "searchFavorites": { + "message": "Search Favorites" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Settings" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Invalid email address." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Continue" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Recovery Code" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Yes" + }, + "no": { + "message": "No" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "Add New Folder" + }, + "view": { + "message": "View" + }, + "account": { + "message": "Account" + }, + "loading": { + "message": "Loading..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 minute" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 minutes" + }, + "fifteenMinutes": { + "message": "15 minutes" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "Copy", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "Later" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json new file mode 100644 index 0000000000..a981ce7652 --- /dev/null +++ b/apps/desktop/src/locales/pl/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtry" + }, + "allItems": { + "message": "Wszystkie elementy" + }, + "favorites": { + "message": "Ulubione" + }, + "types": { + "message": "Rodzaje" + }, + "typeLogin": { + "message": "Dane logowania" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Tożsamość" + }, + "typeSecureNote": { + "message": "Bezpieczna notatka" + }, + "folders": { + "message": "Foldery" + }, + "collections": { + "message": "Kolekcje" + }, + "searchVault": { + "message": "Szukaj w sejfie" + }, + "addItem": { + "message": "Dodaj element" + }, + "shared": { + "message": "Udostępnione" + }, + "share": { + "message": "Udostępnij" + }, + "moveToOrganization": { + "message": "Przenieś do organizacji" + }, + "movedItemToOrg": { + "message": "Element $ITEMNAME$ został przeniesiony do organizacji $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Wybierz organizację, do której chcesz przenieść ten element. Ta czynność spowoduje utratę własności elementu i przenosi te uprawnienia do organizacji." + }, + "attachments": { + "message": "Załączniki" + }, + "viewItem": { + "message": "Zobacz element" + }, + "name": { + "message": "Nazwa" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nowy URI" + }, + "username": { + "message": "Nazwa użytkownika" + }, + "password": { + "message": "Hasło" + }, + "passphrase": { + "message": "Hasło wyrazowe" + }, + "editItem": { + "message": "Edytuj element" + }, + "emailAddress": { + "message": "Adres e-mail" + }, + "verificationCodeTotp": { + "message": "Kod weryfikacyjny (TOTP)" + }, + "website": { + "message": "Strona" + }, + "notes": { + "message": "Notatki" + }, + "customFields": { + "message": "Pola niestandardowe" + }, + "launch": { + "message": "Uruchom" + }, + "copyValue": { + "message": "Kopiuj wartość", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimalizuj podczas kopiowania do schowka" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimalizuj podczas kopiowania danych elementu do schowka." + }, + "toggleVisibility": { + "message": "Pokaż / Ukryj" + }, + "toggleCollapse": { + "message": "Zwiń/rozwiń", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Właściciel karty" + }, + "number": { + "message": "Numer" + }, + "brand": { + "message": "Wydawca" + }, + "expiration": { + "message": "Data wygaśnięcia" + }, + "securityCode": { + "message": "Kod zabezpieczający" + }, + "identityName": { + "message": "Nazwa profilu" + }, + "company": { + "message": "Firma" + }, + "ssn": { + "message": "Numer PESEL" + }, + "passportNumber": { + "message": "Numer paszportu" + }, + "licenseNumber": { + "message": "Numer prawa jazdy" + }, + "email": { + "message": "Adres e-mail" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adres" + }, + "premiumRequired": { + "message": "Konto Premium jest wymagane" + }, + "premiumRequiredDesc": { + "message": "Konto Premium jest wymagane, aby skorzystać z tej funkcji." + }, + "errorOccurred": { + "message": "Wystąpił błąd." + }, + "error": { + "message": "Błąd" + }, + "january": { + "message": "Styczeń" + }, + "february": { + "message": "Luty" + }, + "march": { + "message": "Marzec" + }, + "april": { + "message": "Kwiecień" + }, + "may": { + "message": "Maj" + }, + "june": { + "message": "Czerwiec" + }, + "july": { + "message": "Lipiec" + }, + "august": { + "message": "Sierpień" + }, + "september": { + "message": "Wrzesień" + }, + "october": { + "message": "Październik" + }, + "november": { + "message": "Listopad" + }, + "december": { + "message": "Grudzień" + }, + "ex": { + "message": "np.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Tytuł" + }, + "mr": { + "message": "Pan" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Pani" + }, + "dr": { + "message": "Doktor" + }, + "expirationMonth": { + "message": "Miesiąc wygaśnięcia" + }, + "expirationYear": { + "message": "Rok wygaśnięcia" + }, + "select": { + "message": "Wybierz" + }, + "other": { + "message": "Inne" + }, + "generatePassword": { + "message": "Generuj hasło" + }, + "type": { + "message": "Rodzaj" + }, + "firstName": { + "message": "Imię" + }, + "middleName": { + "message": "Drugie imię" + }, + "lastName": { + "message": "Nazwisko" + }, + "fullName": { + "message": "Imię i nazwisko" + }, + "address1": { + "message": "Adres 1" + }, + "address2": { + "message": "Adres 2" + }, + "address3": { + "message": "Adres 3" + }, + "cityTown": { + "message": "Miasto" + }, + "stateProvince": { + "message": "Województwo" + }, + "zipPostalCode": { + "message": "Kod pocztowy" + }, + "country": { + "message": "Kraj" + }, + "save": { + "message": "Zapisz" + }, + "cancel": { + "message": "Anuluj" + }, + "delete": { + "message": "Usuń" + }, + "favorite": { + "message": "Ulubione" + }, + "edit": { + "message": "Edytuj" + }, + "authenticatorKeyTotp": { + "message": "Klucz Uwierzytelniający (TOTP)" + }, + "folder": { + "message": "Folder" + }, + "newCustomField": { + "message": "Nowe pole niestandardowe" + }, + "value": { + "message": "Wartość" + }, + "dragToSort": { + "message": "Przeciągnij, aby posortować" + }, + "cfTypeText": { + "message": "Tekst" + }, + "cfTypeHidden": { + "message": "Pole maskowane" + }, + "cfTypeBoolean": { + "message": "Wartość logiczna" + }, + "cfTypeLinked": { + "message": "Powiązane pole", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Powiązana wartość", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Usuń" + }, + "nameRequired": { + "message": "Nazwa jest wymagana." + }, + "addedItem": { + "message": "Element został dodany" + }, + "editedItem": { + "message": "Element został zaktualizowany" + }, + "deleteItem": { + "message": "Usuń element" + }, + "deleteFolder": { + "message": "Usuń folder" + }, + "deleteAttachment": { + "message": "Usuń załącznik" + }, + "deleteItemConfirmation": { + "message": "Czy na pewno chcesz to usunąć?" + }, + "deletedItem": { + "message": "Element został przeniesiony do kosza" + }, + "overwritePasswordConfirmation": { + "message": "Czy na pewno chcesz zastąpić obecne hasło?" + }, + "overwriteUsername": { + "message": "Nadpisz nazwę użytkownika" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Nieprzypisane", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj folder" + }, + "editFolder": { + "message": "Edytuj folder" + }, + "regeneratePassword": { + "message": "Wygeneruj hasło ponownie" + }, + "copyPassword": { + "message": "Kopiuj hasło" + }, + "copyUri": { + "message": "Kopiuj URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopiuj kod weryfikacyjny (TOTP)" + }, + "length": { + "message": "Długość" + }, + "numWords": { + "message": "Liczba słów" + }, + "wordSeparator": { + "message": "Separator słów" + }, + "capitalize": { + "message": "Wielkie litery", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Uwzględnij cyfry" + }, + "close": { + "message": "Zamknij" + }, + "minNumbers": { + "message": "Minimalna liczba cyfr" + }, + "minSpecial": { + "message": "Minimalna liczba znaków specjalnych", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Unikaj niejednoznacznych znaków" + }, + "searchCollection": { + "message": "Szukaj w kolekcji" + }, + "searchFolder": { + "message": "Szukaj w folderze" + }, + "searchFavorites": { + "message": "Szukaj w ulubionych" + }, + "searchType": { + "message": "Szukaj elementu", + "description": "Search item type" + }, + "newAttachment": { + "message": "Dodaj załącznik" + }, + "deletedAttachment": { + "message": "Załącznik został usunięty" + }, + "deleteAttachmentConfirmation": { + "message": "Czy na pewno chcesz usunąć ten załącznik?" + }, + "attachmentSaved": { + "message": "Załącznik został zapisany." + }, + "file": { + "message": "Plik" + }, + "selectFile": { + "message": "Wybierz plik." + }, + "maxFileSize": { + "message": "Maksymalny rozmiar pliku to 500 MB." + }, + "updateKey": { + "message": "Nie możesz używać tej funkcji, dopóki nie zaktualizujesz klucza szyfrowania." + }, + "editedFolder": { + "message": "Folder został zaktualizowany" + }, + "addedFolder": { + "message": "Folder został dodany" + }, + "deleteFolderConfirmation": { + "message": "Czy na pewno chcesz usunąć ten folder?" + }, + "deletedFolder": { + "message": "Folder został usunięty" + }, + "loginOrCreateNewAccount": { + "message": "Zaloguj się lub utwórz nowe konto, aby uzyskać dostęp do Twojego bezpiecznego sejfu." + }, + "createAccount": { + "message": "Utwórz konto" + }, + "logIn": { + "message": "Zaloguj się" + }, + "submit": { + "message": "Wyślij" + }, + "masterPass": { + "message": "Hasło główne" + }, + "masterPassDesc": { + "message": "Hasło główne zapewnia dostęp do sejfu. To bardzo ważne, aby je pamiętać, ponieważ zapomnianego hasła nie będzie można odzyskać." + }, + "masterPassHintDesc": { + "message": "Podpowiedź do hasła głównego może pomóc Ci przypomnieć hasło, jeśli je zapomnisz." + }, + "reTypeMasterPass": { + "message": "Wpisz ponownie hasło główne" + }, + "masterPassHint": { + "message": "Podpowiedź do hasła głównego (opcjonalnie)" + }, + "settings": { + "message": "Ustawienia" + }, + "passwordHint": { + "message": "Podpowiedź do hasła" + }, + "enterEmailToGetHint": { + "message": "Wpisz adres e-mail powiązany z kontem, aby otrzymać podpowiedź do hasła głównego." + }, + "getMasterPasswordHint": { + "message": "Uzyskaj podpowiedź do hasła głównego" + }, + "emailRequired": { + "message": "Adres e-mail jest wymagany." + }, + "invalidEmail": { + "message": "Adres e-mail jest nieprawidłowy." + }, + "masterPassRequired": { + "message": "Hasło główne jest wymagane." + }, + "masterPassLength": { + "message": "Hasło główne musi zawierać co najmniej 8 znaków." + }, + "masterPassDoesntMatch": { + "message": "Hasła nie pasują do siebie." + }, + "newAccountCreated": { + "message": "Konto zostało utworzone! Teraz możesz się zalogować." + }, + "masterPassSent": { + "message": "Wysłaliśmy Tobie wiadomość e-mail z podpowiedzią do hasła głównego." + }, + "unexpectedError": { + "message": "Wystąpił nieoczekiwany błąd." + }, + "itemInformation": { + "message": "Informacje o elemencie" + }, + "noItemsInList": { + "message": "Brak elementów." + }, + "sendVerificationCode": { + "message": "Wyślij kod weryfikacyjny na adres e-mail" + }, + "sendCode": { + "message": "Wyślij kod" + }, + "codeSent": { + "message": "Kod został wysłany" + }, + "verificationCode": { + "message": "Kod weryfikacyjny" + }, + "confirmIdentity": { + "message": "Potwierdź swoją tożsamość, aby kontynuować." + }, + "verificationCodeRequired": { + "message": "Kod weryfikacyjny jest wymagany." + }, + "invalidVerificationCode": { + "message": "Kod weryfikacyjny jest nieprawidłowy" + }, + "continue": { + "message": "Kontynuuj" + }, + "enterVerificationCodeApp": { + "message": "Wpisz 6-cyfrowy kod weryfikacyjny z aplikacji uwierzytelniającej." + }, + "enterVerificationCodeEmail": { + "message": "Wpisz 6-cyfrowy kod weryfikacyjny, który został przesłany na adres $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Kod weryfikacyjny został wysłany na adres $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamiętaj mnie" + }, + "sendVerificationCodeEmailAgain": { + "message": "Wyślij ponownie wiadomość z kodem weryfikacyjnym" + }, + "useAnotherTwoStepMethod": { + "message": "Użyj innej metody logowania dwustopniowego" + }, + "insertYubiKey": { + "message": "Włóż klucz YubiKey do portu USB komputera, a następnie dotknij jego przycisku." + }, + "insertU2f": { + "message": "Włóż klucz bezpieczeństwa do portu USB komputera. Jeśli klucz posiada przycisk, dotknij go." + }, + "recoveryCodeDesc": { + "message": "Utraciłeś dostęp do wszystkich swoich mechanizmów dwustopniowego logowania? Użyj kodów odzyskiwania, aby wyłączyć dwustopniowe logowanie na Twoim koncie." + }, + "recoveryCodeTitle": { + "message": "Kod odzyskiwania" + }, + "authenticatorAppTitle": { + "message": "Aplikacja uwierzytelniająca" + }, + "authenticatorAppDesc": { + "message": "Użyj aplikacji mobilnej (np. Authy lub Google Authenticator) do generowania czasowych kodów weryfikacyjnych.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Klucz bezpieczeństwa YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Użyj YubiKey jako metody dostępu do konta. Działa z YubiKey 4, 4 Nano, 4C i urządzeniami NEO." + }, + "duoDesc": { + "message": "Weryfikacja z użyciem Duo Security poprzez aplikację Duo Mobile, SMS, połączenie telefoniczne lub klucz bezpieczeństwa U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Weryfikacja dostępu do Twojej organizacji z użyciem Duo Security poprzez aplikację Duo Mobile, SMS, połączenie telefoniczne lub klucz bezpieczeństwa U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Użyj dowolnego klucza bezpieczeństwa WebAuthn, aby uzyskać dostęp do swojego konta." + }, + "emailTitle": { + "message": "Adres e-mail" + }, + "emailDesc": { + "message": "Kody weryfikacyjne zostaną wysłane do Ciebie wiadomością e-mail." + }, + "loginUnavailable": { + "message": "Logowanie jest niedostępne" + }, + "noTwoStepProviders": { + "message": "Konto posiada włączoną opcję logowania dwustopniowego, jednak to urządzenie nie wspiera żadnego ze skonfigurowanych mechanizmów autoryzacji dwustopniowej." + }, + "noTwoStepProviders2": { + "message": "Dodaj dodatkowe mechanizmy, które są lepiej obsługiwane przez różne urządzenia (np. aplikacje uwierzytelniające)." + }, + "twoStepOptions": { + "message": "Opcje logowania dwustopniowego" + }, + "selfHostedEnvironment": { + "message": "Samodzielnie hostowane środowisko" + }, + "selfHostedEnvironmentFooter": { + "message": "Wpisz podstawowy adres URL hostowanej instalacji Bitwarden." + }, + "customEnvironment": { + "message": "Niestandardowe środowisko" + }, + "customEnvironmentFooter": { + "message": "Dla zaawansowanych użytkowników. Możesz wpisać podstawowy adres URL niezależnie dla każdej usługi." + }, + "baseUrl": { + "message": "Adres URL serwera" + }, + "apiUrl": { + "message": "Adres URL serwera interfejsu API" + }, + "webVaultUrl": { + "message": "Adres URL serwera sejfu internetowego" + }, + "identityUrl": { + "message": "Adres URL serwera tożsamości" + }, + "notificationsUrl": { + "message": "Adres URL serwera powiadomień" + }, + "iconsUrl": { + "message": "Adres URL serwera ikon" + }, + "environmentSaved": { + "message": "Adresy URL środowiska zostały zapisane." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Tak" + }, + "no": { + "message": "Nie" + }, + "overwritePassword": { + "message": "Zastąp hasło" + }, + "learnMore": { + "message": "Dowiedz się więcej" + }, + "featureUnavailable": { + "message": "Funkcja jest niedostępna" + }, + "loggedOut": { + "message": "Wylogowano" + }, + "loginExpired": { + "message": "Twoja sesja wygasła." + }, + "logOutConfirmation": { + "message": "Czy na pewno chcesz się wylogować?" + }, + "logOut": { + "message": "Wyloguj się" + }, + "addNewLogin": { + "message": "Dodaj dane logowania" + }, + "addNewItem": { + "message": "Dodaj element" + }, + "addNewFolder": { + "message": "Dodaj folder" + }, + "view": { + "message": "Widok" + }, + "account": { + "message": "Konto" + }, + "loading": { + "message": "Ładowanie..." + }, + "lockVault": { + "message": "Zablokuj sejf" + }, + "passwordGenerator": { + "message": "Generator hasła" + }, + "contactUs": { + "message": "Skontaktuj się z nami" + }, + "getHelp": { + "message": "Uzyskaj pomoc" + }, + "fileBugReport": { + "message": "Zgłoś błąd" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Obserwuj nas" + }, + "syncVault": { + "message": "Synchronizuj sejf" + }, + "changeMasterPass": { + "message": "Zmień hasło główne" + }, + "changeMasterPasswordConfirmation": { + "message": "Hasło główne możesz zmienić na stronie sejfu bitwarden.com. Czy chcesz przejść do tej strony?" + }, + "fingerprintPhrase": { + "message": "Unikalny identyfikator konta", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Unikalny identyfikator Twojego konta", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Przejdź do sejfu internetowego" + }, + "getMobileApp": { + "message": "Pobierz aplikację mobilną" + }, + "getBrowserExtension": { + "message": "Pobierz rozszerzenie przeglądarki" + }, + "syncingComplete": { + "message": "Synchronizacja została zakończona" + }, + "syncingFailed": { + "message": "Synchronizacja nie powiodła się" + }, + "yourVaultIsLocked": { + "message": "Sejf jest zablokowany. Zweryfikuj swoją tożsamość, aby kontynuować." + }, + "unlock": { + "message": "Odblokuj" + }, + "loggedInAsOn": { + "message": "Zalogowano jako $EMAIL$ do $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Hasło główne jest nieprawidłowe" + }, + "twoStepLoginConfirmation": { + "message": "Logowanie dwustopniowe sprawia, że konto jest bardziej bezpieczne poprzez wymuszenie potwierdzenia logowania z innego urządzenia, takiego jak z klucza bezpieczeństwa, aplikacji uwierzytelniającej, wiadomości SMS, telefonu lub adresu e-mail. Logowanie dwustopniowe możesz włączyć w sejfie internetowym bitwarden.com. Czy chcesz przejść do tej strony?" + }, + "twoStepLogin": { + "message": "Logowanie dwustopniowe" + }, + "vaultTimeout": { + "message": "Blokowanie sejfu" + }, + "vaultTimeoutDesc": { + "message": "Wybierz kiedy sejf zostanie zablokowany i wykonaj następującą akcję." + }, + "immediately": { + "message": "Natychmiast" + }, + "tenSeconds": { + "message": "10 sekund" + }, + "twentySeconds": { + "message": "20 sekund" + }, + "thirtySeconds": { + "message": "30 sekund" + }, + "oneMinute": { + "message": "1 minuta" + }, + "twoMinutes": { + "message": "2 minuty" + }, + "fiveMinutes": { + "message": "5 minut" + }, + "fifteenMinutes": { + "message": "15 minut" + }, + "thirtyMinutes": { + "message": "30 minut" + }, + "oneHour": { + "message": "1 godzina" + }, + "fourHours": { + "message": "4 godziny" + }, + "onIdle": { + "message": "Po bezczynności przez 5 minut" + }, + "onSleep": { + "message": "Po uśpieniu komputera" + }, + "onLocked": { + "message": "Po zablokowaniu komputera" + }, + "onRestart": { + "message": "Po restarcie aplikacji" + }, + "never": { + "message": "Nigdy" + }, + "security": { + "message": "Zabezpieczenia" + }, + "clearClipboard": { + "message": "Wyczyść schowek", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatycznie wyczyść skopiowaną wartość ze schowka.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Wyłącz ikony stron" + }, + "disableFaviconDesc": { + "message": "Wyświetlaj rozpoznawalną ikonę serwisu obok danych logowania w sejfie." + }, + "enableMinToTray": { + "message": "Minimalizuj do zasobnika systemowego" + }, + "enableMinToTrayDesc": { + "message": "Po zminimalizowaniu okna, pokaż ikonę w zasobniku systemowym." + }, + "enableMinToMenuBar": { + "message": "Minimalizuj do paska menu" + }, + "enableMinToMenuBarDesc": { + "message": "Po zminimalizowaniu okna, pokaż ikonę w pasku zadań." + }, + "enableCloseToTray": { + "message": "Zamknij do zasobnika systemowego" + }, + "enableCloseToTrayDesc": { + "message": "Po zamknięciu okna, pokaż ikonę w zasobniku systemowym." + }, + "enableCloseToMenuBar": { + "message": "Zamknij do paska menu" + }, + "enableCloseToMenuBarDesc": { + "message": "Po zamknięciu okna, pokaż ikonę w pasku menu." + }, + "enableTray": { + "message": "Włącz ikonę w zasobniku systemowym" + }, + "enableTrayDesc": { + "message": "Zawsze pokazuj ikonę w zasobniku systemowym." + }, + "startToTray": { + "message": "Uruchom zminimalizowany do zasobnika systemowego" + }, + "startToTrayDesc": { + "message": "Przy pierwszym uruchomieniu aplikacji, pokaż tylko ikonę w zasobniku systemowym." + }, + "startToMenuBar": { + "message": "Uruchom zminimalizowany do paska menu" + }, + "startToMenuBarDesc": { + "message": "Przy pierwszym uruchomieniu aplikacji, pokaż tylko ikonę w pasku menu." + }, + "openAtLogin": { + "message": "Uruchom automatycznie po zalogowaniu" + }, + "openAtLoginDesc": { + "message": "Uruchom aplikację Bitwarden automatycznie po zalogowaniu." + }, + "alwaysShowDock": { + "message": "Zawsze pokazuj w Docku" + }, + "alwaysShowDockDesc": { + "message": "Pokaż ikonę Bitwarden w Docku po zminimalizowaniu do paska menu." + }, + "confirmTrayTitle": { + "message": "Potwierdź wyłączenie zasobnika systemowego" + }, + "confirmTrayDesc": { + "message": "Wyłączenie tej opcji spowoduje wyłącznie wszystkich innych powiązanych ustawień z zasobnikiem systemowym." + }, + "language": { + "message": "Język" + }, + "languageDesc": { + "message": "Zmień język aplikacji. Uruchomienie ponowne jest wymagane." + }, + "theme": { + "message": "Motyw" + }, + "themeDesc": { + "message": "Zmień motyw kolorystyczny aplikacji." + }, + "dark": { + "message": "Ciemny", + "description": "Dark color" + }, + "light": { + "message": "Jasny", + "description": "Light color" + }, + "copy": { + "message": "Kopiuj", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Sprawdź dostępność aktualizacji" + }, + "version": { + "message": "Wersja $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Uruchom ponownie, aby zaktualizować" + }, + "restartToUpdateDesc": { + "message": "Wersja $VERSION_NUM$ jest gotowa do zainstalowania. Czy chcesz uruchomić ponownie aplikację i ją zaktualizować?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Dostępna jest aktualizacja" + }, + "updateAvailableDesc": { + "message": "Aktualizacja została znaleziona. Czy chcesz pobrać ją teraz?" + }, + "restart": { + "message": "Uruchom ponownie" + }, + "later": { + "message": "Później" + }, + "noUpdatesAvailable": { + "message": "Aktualizacje nie są obecnie dostępne. Używasz najnowszej wersji." + }, + "updateError": { + "message": "Błąd aktualizacji" + }, + "unknown": { + "message": "Nieznane" + }, + "copyUsername": { + "message": "Kopiuj nazwę użytkownika" + }, + "copyNumber": { + "message": "Kopiuj numer karty", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiuj kod zabezpieczający", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Konto Premium" + }, + "premiumManage": { + "message": "Zarządzaj kontem Premium" + }, + "premiumManageAlert": { + "message": "Kontem Premium możesz zarządzać na stronie sejfu bitwarden.com. Czy chcesz otworzyć tę stronę?" + }, + "premiumRefresh": { + "message": "Przedłuż konto Premium" + }, + "premiumNotCurrentMember": { + "message": "Nie posiadasz obecnie konta Premium." + }, + "premiumSignUpAndGet": { + "message": "Zarejestruj konto Premium, aby otrzymać:" + }, + "premiumSignUpStorage": { + "message": "1 GB miejsca na zaszyfrowane załączniki." + }, + "premiumSignUpTwoStep": { + "message": "Dodatkowe opcje logowania dwustopniowego, takie jak klucze YubiKey, FIDO U2F oraz Duo." + }, + "premiumSignUpReports": { + "message": "Raporty bezpieczeństwa haseł, stanu konta i raporty wycieków danych, aby Twoje dane były bezpieczne." + }, + "premiumSignUpTotp": { + "message": "Generator kodów weryfikacyjnych TOTP (2FA) dla danych logowania w sejfie." + }, + "premiumSignUpSupport": { + "message": "Priorytetowe wsparcie klienta." + }, + "premiumSignUpFuture": { + "message": "Wszystkie przyszłe funkcje premium. Więcej już wkrótce!" + }, + "premiumPurchase": { + "message": "Kup konto Premium" + }, + "premiumPurchaseAlert": { + "message": "Konto Premium możesz zakupić na stronie sejfu bitwarden.com. Czy chcesz otworzyć tę stronę?" + }, + "premiumCurrentMember": { + "message": "Posiadasz konto Premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Dziękujemy za wspieranie Bitwarden." + }, + "premiumPrice": { + "message": "Wszystko to jedynie za $PRICE$ /rok!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Odświeżanie zostało zakończone" + }, + "passwordHistory": { + "message": "Historia haseł" + }, + "clear": { + "message": "Wyczyść", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Brak haseł." + }, + "undo": { + "message": "Cofnij" + }, + "redo": { + "message": "Ponów" + }, + "cut": { + "message": "Wytnij", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Wklej", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Zaznacz wszystko" + }, + "zoomIn": { + "message": "Powiększ" + }, + "zoomOut": { + "message": "Pomniejsz" + }, + "resetZoom": { + "message": "Zresetuj powiększenie" + }, + "toggleFullScreen": { + "message": "Włącz/wyłącz pełny ekran" + }, + "reload": { + "message": "Odśwież" + }, + "toggleDevTools": { + "message": "Włącz/wyłącz narzędzia dla deweloperów" + }, + "minimize": { + "message": "Minimalizuj", + "description": "Minimize window" + }, + "zoom": { + "message": "Powiększenie" + }, + "bringAllToFront": { + "message": "Przenieś wszystko na wierzch", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "O Bitwarden" + }, + "services": { + "message": "Usługi" + }, + "hideBitwarden": { + "message": "Ukryj Bitwarden" + }, + "hideOthers": { + "message": "Ukryj pozostałe" + }, + "showAll": { + "message": "Pokaż wszystkie" + }, + "quitBitwarden": { + "message": "Zamknij Bitwarden" + }, + "valueCopied": { + "message": "Skopiowano $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Pomoc" + }, + "window": { + "message": "Okno" + }, + "checkPassword": { + "message": "Sprawdź, czy hasło zostało ujawnione." + }, + "passwordExposed": { + "message": "To hasło znajduje się w $VALUE$ wykradzionej(ych) bazie(ach) danych. Należy je zmienić.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "To hasło nie znajduje się w żadnej znanej wykradzionej bazie danych. Powinno być bezpieczne w użyciu." + }, + "baseDomain": { + "message": "Domena podstawowa", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nazwa domeny", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Dokładnie" + }, + "startsWith": { + "message": "Rozpoczyna się od" + }, + "regEx": { + "message": "Wyrażenie regularne", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Wykrywanie dopasowania", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Domyślne wykrywanie dopasowania", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Zmień opcje" + }, + "organization": { + "message": "Organizacja", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Domyślny" + }, + "exit": { + "message": "Wyjście" + }, + "showHide": { + "message": "Pokaż / Ukryj", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Ukryj w zasobniku systemowym" + }, + "alwaysOnTop": { + "message": "Zawsze na wierzchu", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Zaktualizowano", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Aktualizacja hasła", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Eksportuj sejf" + }, + "fileFormat": { + "message": "Format pliku" + }, + "warning": { + "message": "UWAGA", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Potwierdź eksportowanie sejfu" + }, + "exportWarningDesc": { + "message": "Plik zawiera dane sejfu w niezaszyfrowanym formacie. Nie powinieneś go przechowywać, ani przesyłać poprzez niezabezpieczone kanały (takie jak poczta e-mail). Skasuj go natychmiast po użyciu." + }, + "encExportKeyWarningDesc": { + "message": "Dane eksportu zostaną zaszyfrowane za pomocą klucza szyfrowania konta. Jeśli kiedykolwiek zmienisz ten klucz, wyeksportuj dane ponownie, ponieważ nie będziesz w stanie odszyfrować tego pliku." + }, + "encExportAccountWarningDesc": { + "message": "Klucze szyfrowania konta są unikalne dla każdego użytkownika Bitwarden, więc nie możesz zaimportować zaszyfrowanego pliku eksportu na inne konto." + }, + "noOrganizationsList": { + "message": "Nie należysz do żadnej organizacji. Organizacje pozwalają na bezpieczne udostępnianie elementów innym użytkownikom." + }, + "noCollectionsInList": { + "message": "Brak kolekcji do wyświetlenia." + }, + "ownership": { + "message": "Właściciel" + }, + "whoOwnsThisItem": { + "message": "Kto jest właścicielem tego elementu?" + }, + "strong": { + "message": "Silne", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobre", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Słabe", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Słabe hasło główne" + }, + "weakMasterPasswordDesc": { + "message": "Wybrane przez Ciebie hasło główne jest słabe. Powinieneś użyć silniejszego hasła (lub frazy), aby właściwie chronić swoje konto Bitwarden. Czy na pewno chcesz użyć tego hasła głównego?" + }, + "pin": { + "message": "Kod PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Odblokuj kodem PIN" + }, + "setYourPinCode": { + "message": "Ustaw kod PIN do odblokowywania aplikacji Bitwarden. Ustawienia odblokowywania kodem PIN zostaną zresetowane po wylogowaniu." + }, + "pinRequired": { + "message": "Kod PIN jest wymagany." + }, + "invalidPin": { + "message": "Kod PIN jest nieprawidłowy." + }, + "unlockWithWindowsHello": { + "message": "Odblokuj za pomocą Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Zweryfikuj dla Bitwarden." + }, + "unlockWithTouchId": { + "message": "Odblokuj za pomocą Touch ID" + }, + "touchIdConsentMessage": { + "message": "odblokuj sejf" + }, + "noAutoPromptWindowsHello": { + "message": "Zapamiętaj autoryzację Windows Hello." + }, + "noAutoPromptTouchId": { + "message": "Zapamiętaj autoryzację Touch ID." + }, + "lockWithMasterPassOnRestart": { + "message": "Zablokuj hasłem głównym po uruchomieniu ponownym" + }, + "preferences": { + "message": "Ustawienia" + }, + "enableMenuBar": { + "message": "Włącz ikonę na pasku menu" + }, + "enableMenuBarDesc": { + "message": "Zawsze pokazuj ikonę na pasku menu." + }, + "hideToMenuBar": { + "message": "Schowaj do paska menu" + }, + "selectOneCollection": { + "message": "Musisz wybrać co najmniej jedną kolekcję." + }, + "premiumUpdated": { + "message": "Konto Premium zostało zaktualizowane." + }, + "restore": { + "message": "Przywróć" + }, + "premiumManageAlertAppStore": { + "message": "Możesz zarządzać subskrypcją w sklepie App Store. Czy chcesz przejść do sklepu App Store?" + }, + "legal": { + "message": "Informacje prawne", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Regulamin" + }, + "privacyPolicy": { + "message": "Polityka prywatności" + }, + "unsavedChangesConfirmation": { + "message": "Czy na pewno chcesz wyjść? Jeśli wyjdziesz, obecne informacje nie zostaną zapisane." + }, + "unsavedChangesTitle": { + "message": "Niezapisane zmiany" + }, + "clone": { + "message": "Klonuj" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wpływa na ustawienia generatora." + }, + "vaultTimeoutAction": { + "message": "Sposób blokowania sejfu" + }, + "vaultTimeoutActionLockDesc": { + "message": "Po zablokowaniu sejfu, musisz ponownie wpisać hasło główne, aby uzyskać do niego dostęp." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Po wylogowaniu się z sejfu, musisz ponownie zalogować się, aby uzyskać do niego dostęp." + }, + "lock": { + "message": "Zablokuj", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Kosz", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Szukaj w koszu" + }, + "permanentlyDeleteItem": { + "message": "Usuń trwale element" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Czy na pewno chcesz usunąć trwale ten element?" + }, + "permanentlyDeletedItem": { + "message": "Element został trwale usunięty" + }, + "restoreItem": { + "message": "Przywróć element" + }, + "restoreItemConfirmation": { + "message": "Czy na pewno chcesz przywrócić ten element?" + }, + "restoredItem": { + "message": "Element został przywrócony" + }, + "permanentlyDelete": { + "message": "Usuń trwale" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Po wylogowaniu się z sejfu musisz ponownie zalogować się, aby uzyskać do niego dostęp. Czy na pewno chcesz użyć tego ustawienia?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Potwierdź sposób blokowania sejfu" + }, + "enterpriseSingleSignOn": { + "message": "Logowanie jednokrotne" + }, + "setMasterPassword": { + "message": "Ustaw hasło główne" + }, + "ssoCompleteRegistration": { + "message": "W celu zakończenia jednokrotnego logowania SSO, ustaw hasło główne, aby uzyskać dostęp do sejfu." + }, + "newMasterPass": { + "message": "Nowe hasło główne" + }, + "confirmNewMasterPass": { + "message": "Potwierdź nowe hasło główne" + }, + "masterPasswordPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wymaga, aby hasło główne spełniało następujące wymagania:" + }, + "policyInEffectMinComplexity": { + "message": "Minimalny poziom złożoności wynosi $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimalna długość wynosi $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Zawiera co najmniej jedną wielką literę" + }, + "policyInEffectLowercase": { + "message": "Zawiera co najmniej jedną małą literę" + }, + "policyInEffectNumbers": { + "message": "Zawiera co najmniej jedną cyfrę" + }, + "policyInEffectSpecial": { + "message": "Zawiera co najmniej jeden następujący znak specjalny $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Nowe hasło główne nie spełnia wymaganych zasad." + }, + "acceptPolicies": { + "message": "Zaznaczając tę opcję, akceptujesz:" + }, + "acceptPoliciesError": { + "message": "Nie zaakceptowałeś regulaminu i polityki prywatności." + }, + "enableBrowserIntegration": { + "message": "Włącz połączenie z przeglądarką" + }, + "enableBrowserIntegrationDesc": { + "message": "Połączenie z przeglądarką jest używane do odblokowania danymi biometrycznymi." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Połączenie z przeglądarką nie jest obsługiwane" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Połączenie z przeglądarką jest obsługiwane tylko z wersją aplikacji ze sklepu Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Połączenie z przeglądarką nie jest obsługiwane" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Połączenie z przeglądarką nie jest obecnie obsługiwane w aplikacji w wersji Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Wymagaj weryfikacji połączenia z przeglądarką" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Wymagaj sprawdzenia identyfikatora podczas tworzenia połączenia między aplikacją a przeglądarką. Po włączeniu tej funkcji, musisz zweryfikować każde nawiązywane połączenie." + }, + "approve": { + "message": "Zatwierdź" + }, + "verifyBrowserTitle": { + "message": "Zweryfikuj połączenie z przeglądarką" + }, + "verifyBrowserDesc": { + "message": "Upewnij się, że wyświetlony identyfikator jest identyczny z pokazanym w rozszerzeniu przeglądarki." + }, + "biometricsNotEnabledTitle": { + "message": "Dane biometryczne są wyłączone" + }, + "biometricsNotEnabledDesc": { + "message": "Aby włączyć dane biometryczne w przeglądarce, musisz włączyć tę samą funkcję w ustawianiach aplikacji." + }, + "personalOwnershipSubmitError": { + "message": "Ze względu na zasadę przedsiębiorstwa, nie możesz zapisywać elementów w osobistym sejfie. Zmień właściciela elementu na organizację i wybierz jedną z dostępnych kolekcji,." + }, + "hintEqualsPassword": { + "message": "Podpowiedź do hasła nie może być taka sama jak hasło." + }, + "personalOwnershipPolicyInEffect": { + "message": "Zasada organizacji ma wpływ na opcję własności elementów." + }, + "allSends": { + "message": "Wszystkie wysyłki", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Plik" + }, + "sendTypeText": { + "message": "Tekst" + }, + "searchSends": { + "message": "Szukaj w wysyłkach", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edytuj wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mój sejf" + }, + "text": { + "message": "Tekst" + }, + "deletionDate": { + "message": "Data usunięcia" + }, + "deletionDateDesc": { + "message": "Wysyłka zostanie trwale usunięta w określonym czasie.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Data wygaśnięcia" + }, + "expirationDateDesc": { + "message": "Jeśli funkcja jest włączona, dostęp do wysyłki wygaśnie po określonym czasie.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksymalna liczba dostępów" + }, + "maxAccessCountDesc": { + "message": "Jeśli funkcja jest włączona, po osiągnięciu maksymalnej liczby dostępów, użytkownicy nie będą mieli dostępu do tej wysyłki.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Obecna liczba dostępów" + }, + "disableSend": { + "message": "Wyłącz wysyłkę, aby nikt nie miał do niej dostępu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Opcjonalne hasło dla użytkownika, aby uzyskać dostęp do wysyłki.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Prywatne notatki o tej wysyłce.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Link wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Ukryj domyślnie tekst wysyłki", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Wysyłka została utworzona", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Wysyłka została zaktualizowana", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Wysyłka została usunięta", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nowe hasło" + }, + "whatTypeOfSend": { + "message": "Jakiego typu jest to wysyłka?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Utwórz wysyłkę", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Tekst, który chcesz wysłać." + }, + "sendFileDesc": { + "message": "Plik, który chcesz wysłać." + }, + "days": { + "message": "$DAYS$ dni", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dzień" + }, + "custom": { + "message": "Niestandardowe" + }, + "deleteSendConfirmation": { + "message": "Czy na pewno chcesz usunąć tę wysyłkę?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopiuj link wysyłki do schowka", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Po zapisaniu wysyłki, skopiuj link do schowka." + }, + "sendDisabled": { + "message": "Wysyłka została wyłączona", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Ze względu na zasadę przedsiębiorstwa, tylko Ty możesz usunąć obecną wysyłkę.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopiuj link" + }, + "disabled": { + "message": "Wyłączona" + }, + "maxAccessCountReached": { + "message": "Maksymalna liczba dostępów została osiągnięta" + }, + "expired": { + "message": "Wygasła" + }, + "pendingDeletion": { + "message": "Oczekiwanie na usunięcie" + }, + "webAuthnAuthenticate": { + "message": "Uwierzytelnianie WebAuthn" + }, + "hideEmail": { + "message": "Ukryj mój adres e-mail przed odbiorcami." + }, + "sendOptionsPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji wpływa na ustawienia wysyłek." + }, + "emailVerificationRequired": { + "message": "Weryfikacja adresu e-mail jest wymagana" + }, + "emailVerificationRequiredDesc": { + "message": "Musisz zweryfikować adres e-mail, aby używać tej funkcji." + }, + "passwordPrompt": { + "message": "Potwierdź hasłem głównym" + }, + "passwordConfirmation": { + "message": "Potwierdź hasło główne" + }, + "passwordConfirmationDesc": { + "message": "Ta operacja jest chroniona. Aby kontynuować, wpisz ponownie hasło główne." + }, + "updatedMasterPassword": { + "message": "Hasło główne zostało zaktualizowane" + }, + "updateMasterPassword": { + "message": "Zaktualizuj hasło główne" + }, + "updateMasterPasswordWarning": { + "message": "Hasło główne zostało zmienione przez administratora Twojej organizacji. Musisz je zaktualizować, aby uzyskać dostęp do sejfu. Ta czynność spowoduje wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." + }, + "hours": { + "message": "Godziny" + }, + "minutes": { + "message": "Minuty" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Zasady organizacji mają wpływ czas blokowania sejfu. Maksymalny dozwolony czas wynosi $HOURS$ godz. i $MINUTES$ min.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Czas blokowania sejfu przekracza limit określony przez organizację." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatyczne rejestrowanie użytkowników do resetowania hasła" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ta organizacja posługuje się zasadą, która automatycznie rejestruje użytkowników do resetowania hasła. Rejestracja umożliwia administratorom organizacji zmianę Twojego hasła głównego." + }, + "vaultExportDisabled": { + "message": "Eksportowanie sejfu zostało wyłączone" + }, + "personalVaultExportPolicyInEffect": { + "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie Twojego sejfu." + }, + "addAccount": { + "message": "Dodaj konto" + }, + "removeMasterPassword": { + "message": "Usuń hasło główne" + }, + "removedMasterPassword": { + "message": "Hasło główne zostało usunięte." + }, + "convertOrganizationEncryptionDesc": { + "message": "Organizacja $ORGANIZATION$ używa jednokrotnego logowania SSO z własnym serwerem kluczy. Użytkownicy nie muszą logować się za pomocą hasła głównego.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Opuść organizację" + }, + "leaveOrganizationConfirmation": { + "message": "Czy na pewno chcesz opuścić tę organizację?" + }, + "leftOrganization": { + "message": "Nie należysz już do tej organizacji." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nie można nawiązać połączenia z serwerem Key Connector. Spróbuj ponownie później." + }, + "lockAllVaults": { + "message": "Zablokuj wszystkie sejfy" + }, + "accountLimitReached": { + "message": "Nie możesz zalogować się na więcej niż 5 kont jednocześnie." + }, + "accountPreferences": { + "message": "Ustawienia" + }, + "appPreferences": { + "message": "Ustawienia aplikacji (wszystkie konta)" + }, + "accountSwitcherLimitReached": { + "message": "Limit konta został osiągnięty. Wyloguj się z konta, aby dodać inne." + }, + "settingsTitle": { + "message": "Ustawienia aplikacji (konto $EMAIL$)", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Przełącz konto" + }, + "options": { + "message": "Opcje" + }, + "sessionTimeout": { + "message": "Twoja sesja wygasła. Zaloguj się ponownie." + }, + "exportingPersonalVaultTitle": { + "message": "Eksportowanie osobistego sejfu" + }, + "exportingPersonalVaultDescription": { + "message": "Tylko osobiste elementy sejfu powiązane z adresem $EMAIL$ zostaną wyeksportowane. Elementy sejfu należące do organizacji nie będą uwzględnione.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Co chcesz wygenerować?" + }, + "passwordType": { + "message": "Rodzaj hasła" + }, + "regenerateUsername": { + "message": "Wygeneruj ponownie nazwę użytkownika" + }, + "generateUsername": { + "message": "Wygeneruj nazwę użytkownika" + }, + "usernameType": { + "message": "Rodzaj nazwy użytkownika" + }, + "plusAddressedEmail": { + "message": "Adres e-mail z plusem" + }, + "plusAddressedEmailDesc": { + "message": "Użyj możliwości dodawania aliasów u swojego dostawcy poczty e-mail." + }, + "catchallEmail": { + "message": "Adres catch-all" + }, + "catchallEmailDesc": { + "message": "Użyj skonfigurowanej skrzynki catch-all w swojej domenie." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Losowe słowo" + }, + "websiteName": { + "message": "Nazwa witryny" + }, + "service": { + "message": "Usługa" + } +} diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json new file mode 100644 index 0000000000..2dc86d67af --- /dev/null +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtros" + }, + "allItems": { + "message": "Todos os Itens" + }, + "favorites": { + "message": "Favoritos" + }, + "types": { + "message": "Tipos" + }, + "typeLogin": { + "message": "Credencial" + }, + "typeCard": { + "message": "Cartão" + }, + "typeIdentity": { + "message": "Identidade" + }, + "typeSecureNote": { + "message": "Nota Segura" + }, + "folders": { + "message": "Pastas" + }, + "collections": { + "message": "Coleções" + }, + "searchVault": { + "message": "Pesquisar no Cofre" + }, + "addItem": { + "message": "Adicionar Item" + }, + "shared": { + "message": "Compartilhado" + }, + "share": { + "message": "Compartilhar" + }, + "moveToOrganization": { + "message": "Mover para a Organização" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ movido para $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Escolha uma organização para a qual deseja mover este item. Mudar para uma organização transfere a propriedade do item para essa organização. Você não será mais o proprietário direto deste item depois que ele for movido." + }, + "attachments": { + "message": "Anexos" + }, + "viewItem": { + "message": "Ver Item" + }, + "name": { + "message": "Nome" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Novo URI" + }, + "username": { + "message": "Nome de Usuário" + }, + "password": { + "message": "Senha" + }, + "passphrase": { + "message": "Frase Secreta" + }, + "editItem": { + "message": "Editar Item" + }, + "emailAddress": { + "message": "Endereço de E-mail" + }, + "verificationCodeTotp": { + "message": "Código de Verificação (TOTP)" + }, + "website": { + "message": "Site" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Campos Personalizados" + }, + "launch": { + "message": "Abrir" + }, + "copyValue": { + "message": "Copiar Valor", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimizar ao copiar para a área de transferência" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimizar ao copiar dados de um item para a área de transferência." + }, + "toggleVisibility": { + "message": "Alternar Visibilidade" + }, + "toggleCollapse": { + "message": "Alternar Colapso", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Titular do Cartão" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Bandeira" + }, + "expiration": { + "message": "Vencimento" + }, + "securityCode": { + "message": "Código de Segurança" + }, + "identityName": { + "message": "Nome de Identidade" + }, + "company": { + "message": "Empresa" + }, + "ssn": { + "message": "Cadastro de Pessoas Físicas (CPF)" + }, + "passportNumber": { + "message": "Número do Passaporte" + }, + "licenseNumber": { + "message": "Número da Licença" + }, + "email": { + "message": "E-mail" + }, + "phone": { + "message": "Telefone" + }, + "address": { + "message": "Endereço" + }, + "premiumRequired": { + "message": "Requer Assinatura Premium" + }, + "premiumRequiredDesc": { + "message": "Uma conta premium é necessária para usar esse recurso." + }, + "errorOccurred": { + "message": "Ocorreu um erro." + }, + "error": { + "message": "Erro" + }, + "january": { + "message": "Janeiro" + }, + "february": { + "message": "Fevereiro" + }, + "march": { + "message": "Março" + }, + "april": { + "message": "Abril" + }, + "may": { + "message": "Maio" + }, + "june": { + "message": "Junho" + }, + "july": { + "message": "Julho" + }, + "august": { + "message": "Agosto" + }, + "september": { + "message": "Setembro" + }, + "october": { + "message": "Outubro" + }, + "november": { + "message": "Novembro" + }, + "december": { + "message": "Dezembro" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Título" + }, + "mr": { + "message": "Sr" + }, + "mrs": { + "message": "Sra" + }, + "ms": { + "message": "Sra" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mês de Vencimento" + }, + "expirationYear": { + "message": "Ano de Vencimento" + }, + "select": { + "message": "Selecionar" + }, + "other": { + "message": "Outros" + }, + "generatePassword": { + "message": "Gerar Senha" + }, + "type": { + "message": "Tipo" + }, + "firstName": { + "message": "Primeiro Nome" + }, + "middleName": { + "message": "Nome do Meio" + }, + "lastName": { + "message": "Sobrenome" + }, + "fullName": { + "message": "Nome Completo" + }, + "address1": { + "message": "Endereço 1" + }, + "address2": { + "message": "Endereço 2" + }, + "address3": { + "message": "Endereço 3" + }, + "cityTown": { + "message": "Cidade / Localidade" + }, + "stateProvince": { + "message": "Estado / Província" + }, + "zipPostalCode": { + "message": "CEP / Código Postal" + }, + "country": { + "message": "País" + }, + "save": { + "message": "Salvar" + }, + "cancel": { + "message": "Cancelar" + }, + "delete": { + "message": "Excluir" + }, + "favorite": { + "message": "Favorito" + }, + "edit": { + "message": "Editar" + }, + "authenticatorKeyTotp": { + "message": "Chave de Autenticação (TOTP)" + }, + "folder": { + "message": "Pasta" + }, + "newCustomField": { + "message": "Novo Campo Personalizado" + }, + "value": { + "message": "Valor" + }, + "dragToSort": { + "message": "Arrastar para ordenar" + }, + "cfTypeText": { + "message": "Texto" + }, + "cfTypeHidden": { + "message": "Oculto" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "cfTypeLinked": { + "message": "Vinculado", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Valor vinculado", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Remover" + }, + "nameRequired": { + "message": "Requer o nome." + }, + "addedItem": { + "message": "Item adicionado" + }, + "editedItem": { + "message": "Item editado" + }, + "deleteItem": { + "message": "Excluir Item" + }, + "deleteFolder": { + "message": "Excluir Pasta" + }, + "deleteAttachment": { + "message": "Excluir Anexo" + }, + "deleteItemConfirmation": { + "message": "Você realmente deseja enviar para a lixeira?" + }, + "deletedItem": { + "message": "Enviar item para lixeira" + }, + "overwritePasswordConfirmation": { + "message": "Você tem certeza que deseja substituir a senha atual?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Tem certeza que deseja substituir o usuário atual?" + }, + "noneFolder": { + "message": "Nenhuma Pasta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Adicionar Pasta" + }, + "editFolder": { + "message": "Editar Pasta" + }, + "regeneratePassword": { + "message": "Gerar Nova Senha" + }, + "copyPassword": { + "message": "Copiar Senha" + }, + "copyUri": { + "message": "Copiar URI" + }, + "copyVerificationCodeTotp": { + "message": "Copiar Código de Verificação (TOTP)" + }, + "length": { + "message": "Comprimento" + }, + "numWords": { + "message": "Número de Palavras" + }, + "wordSeparator": { + "message": "Separador de Palavra" + }, + "capitalize": { + "message": "Iniciais em Maiúsculas", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Incluir Número" + }, + "close": { + "message": "Fechar" + }, + "minNumbers": { + "message": "Mínimo de números" + }, + "minSpecial": { + "message": "Mínimo Especial", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitar Caracteres Ambíguos" + }, + "searchCollection": { + "message": "Pesquisar Coleção" + }, + "searchFolder": { + "message": "Pesquisar Pasta" + }, + "searchFavorites": { + "message": "Pesquisar Favoritos" + }, + "searchType": { + "message": "Pesquisar Tipo", + "description": "Search item type" + }, + "newAttachment": { + "message": "Adicionar Novo Anexo" + }, + "deletedAttachment": { + "message": "Anexo Excluído" + }, + "deleteAttachmentConfirmation": { + "message": "Tem certeza que deseja excluir esse anexo?" + }, + "attachmentSaved": { + "message": "O anexo foi salvo." + }, + "file": { + "message": "Arquivo" + }, + "selectFile": { + "message": "Selecione um arquivo." + }, + "maxFileSize": { + "message": "O tamanho máximo do arquivo é de 500 MB." + }, + "updateKey": { + "message": "Você não pode usar este recurso até você atualizar sua chave de criptografia." + }, + "editedFolder": { + "message": "Pasta editada" + }, + "addedFolder": { + "message": "Pasta adicionada" + }, + "deleteFolderConfirmation": { + "message": "Você tem certeza que deseja excluir esta pasta?" + }, + "deletedFolder": { + "message": "Pasta excluída" + }, + "loginOrCreateNewAccount": { + "message": "Inicie a sessão ou crie uma nova conta para acessar seu cofre seguro." + }, + "createAccount": { + "message": "Criar Conta" + }, + "logIn": { + "message": "Iniciar Sessão" + }, + "submit": { + "message": "Enviar" + }, + "masterPass": { + "message": "Senha Mestra" + }, + "masterPassDesc": { + "message": "A senha mestra é a senha que você usa para acessar o seu cofre. É muito importante que você não esqueça sua senha mestra. Não há maneira de recuperar a senha caso você se esqueça." + }, + "masterPassHintDesc": { + "message": "Uma dica de senha mestra pode ajudá-lo(a) a lembrá-lo(a) caso você esqueça." + }, + "reTypeMasterPass": { + "message": "Digite Novamente a Senha Mestra" + }, + "masterPassHint": { + "message": "Dica da Senha Mestra (opcional)" + }, + "settings": { + "message": "Configurações" + }, + "passwordHint": { + "message": "Dica da Senha" + }, + "enterEmailToGetHint": { + "message": "Insira o seu endereço de e-mail para receber a dica da sua senha mestra." + }, + "getMasterPasswordHint": { + "message": "Obter dica da senha mestra" + }, + "emailRequired": { + "message": "O endereço de e-mail é obrigatório." + }, + "invalidEmail": { + "message": "Endereço de e-mail inválido." + }, + "masterPassRequired": { + "message": "A senha mestra é obrigatória." + }, + "masterPassLength": { + "message": "A senha mestra deve ter pelo menos 8 caracteres." + }, + "masterPassDoesntMatch": { + "message": "A confirmação da senha mestra não corresponde." + }, + "newAccountCreated": { + "message": "A sua nova conta foi criada! Agora você pode iniciar a sessão." + }, + "masterPassSent": { + "message": "Enviamos um e-mail com a dica da sua senha mestra." + }, + "unexpectedError": { + "message": "Ocorreu um erro inesperado." + }, + "itemInformation": { + "message": "Informação do Item" + }, + "noItemsInList": { + "message": "Não há itens para listar." + }, + "sendVerificationCode": { + "message": "Enviar um código de verificação para o seu e-mail" + }, + "sendCode": { + "message": "Enviar Código" + }, + "codeSent": { + "message": "Código Enviado" + }, + "verificationCode": { + "message": "Código de Verificação" + }, + "confirmIdentity": { + "message": "Confirme a sua identidade para continuar." + }, + "verificationCodeRequired": { + "message": "Requer o código de verificação." + }, + "invalidVerificationCode": { + "message": "Código de verificação inválido" + }, + "continue": { + "message": "Continuar" + }, + "enterVerificationCodeApp": { + "message": "Insira o código de verificação de 6 dígitos do seu aplicativo de autenticação." + }, + "enterVerificationCodeEmail": { + "message": "Insira o código de verificação de 6 dígitos que foi enviado por e-mail para $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-mail de verificação enviado para $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Lembrar de mim" + }, + "sendVerificationCodeEmailAgain": { + "message": "Enviar código de verificação para o e-mail novamente" + }, + "useAnotherTwoStepMethod": { + "message": "Utilizar outro método de verificação em duas etapas" + }, + "insertYubiKey": { + "message": "Introduza a sua YubiKey na porta USB do seu computador, e depois toque no botão da mesma." + }, + "insertU2f": { + "message": "Insira a sua chave de segurança na porta USB do seu computador. Se ele tiver um botão, toque nele." + }, + "recoveryCodeDesc": { + "message": "Perdeu o acesso a todos os seus provedores de duas etapas? Utilize o seu código de recuperação para desativar todos os provedores de duas etapas da sua conta." + }, + "recoveryCodeTitle": { + "message": "Código de Recuperação" + }, + "authenticatorAppTitle": { + "message": "Aplicativo de Autenticação" + }, + "authenticatorAppDesc": { + "message": "Utilize um aplicativo de autenticação (tal como Authy ou Google Authenticator) para gerar códigos de verificação baseados no tempo.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Chave de Segurança YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Utilize uma YubiKey para acessar a sua conta. Funciona com YubiKey 4, 4 Nano, 4C, e dispositivos NEO." + }, + "duoDesc": { + "message": "Verifique com o Duo Security utilizando o aplicativo Duo Mobile, SMS, chamada telefônica, ou chave de segurança U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifique com o Duo Security utilizando o aplicativo Duo Mobile, SMS, chamada telefônica, ou chave de segurança U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "WebAuthn FIDO2" + }, + "webAuthnDesc": { + "message": "Utilize qualquer chave de segurança ativada por WebAuthn para acessar a sua conta." + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Os códigos de verificação vão ser enviados por e-mail para você." + }, + "loginUnavailable": { + "message": "Sessão Indisponível" + }, + "noTwoStepProviders": { + "message": "Esta conta tem a verificação em duas etapas ativada, no entanto, nenhum dos provedores de verificação em duas etapas configurados são suportados por este navegador web." + }, + "noTwoStepProviders2": { + "message": "Por favor inclua provedores adicionais que são melhor suportados entre dispositivos (como um aplicativo de autenticação)." + }, + "twoStepOptions": { + "message": "Opções de Login em Duas Etapas" + }, + "selfHostedEnvironment": { + "message": "Ambiente Auto-hospedado" + }, + "selfHostedEnvironmentFooter": { + "message": "Especifique a URL de base da sua instalação local do Bitwarden." + }, + "customEnvironment": { + "message": "Ambiente Personalizado" + }, + "customEnvironmentFooter": { + "message": "Para usuários avançados. Você pode especificar a URL de base de cada serviço independentemente." + }, + "baseUrl": { + "message": "URL do Servidor" + }, + "apiUrl": { + "message": "URL do Servidor da API" + }, + "webVaultUrl": { + "message": "URL do Servidor do Cofre Web" + }, + "identityUrl": { + "message": "URL do Servidor de Identidade" + }, + "notificationsUrl": { + "message": "URL do Servidor de Notificações" + }, + "iconsUrl": { + "message": "URL do Servidor de Ícones" + }, + "environmentSaved": { + "message": "As URLs do ambiente foram salvas." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Sim" + }, + "no": { + "message": "Não" + }, + "overwritePassword": { + "message": "Substituir Senha" + }, + "learnMore": { + "message": "Saber mais" + }, + "featureUnavailable": { + "message": "Recurso Indisponível" + }, + "loggedOut": { + "message": "Sessão encerrada" + }, + "loginExpired": { + "message": "A sua sessão expirou." + }, + "logOutConfirmation": { + "message": "Você tem certeza que deseja sair?" + }, + "logOut": { + "message": "Encerrar a Sessão" + }, + "addNewLogin": { + "message": "Adicionar Nova Credencial" + }, + "addNewItem": { + "message": "Adicionar Novo Item" + }, + "addNewFolder": { + "message": "Adicionar Nova Pasta" + }, + "view": { + "message": "Ver" + }, + "account": { + "message": "Conta" + }, + "loading": { + "message": "Carregando..." + }, + "lockVault": { + "message": "Bloquear Cofre" + }, + "passwordGenerator": { + "message": "Gerador de Senha" + }, + "contactUs": { + "message": "Fale Conosco" + }, + "getHelp": { + "message": "Obter Ajuda" + }, + "fileBugReport": { + "message": "Enviar um Relatório de Bug" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Siga-nos" + }, + "syncVault": { + "message": "Sincronizar Cofre" + }, + "changeMasterPass": { + "message": "Alterar Senha Mestra" + }, + "changeMasterPasswordConfirmation": { + "message": "Você pode alterar a sua senha mestra no cofre web em bitwarden.com. Você deseja visitar o site agora?" + }, + "fingerprintPhrase": { + "message": "Frase biométrica", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "A sua frase biométrica", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ir para o Cofre Web" + }, + "getMobileApp": { + "message": "Obter o Aplicativo Móvel" + }, + "getBrowserExtension": { + "message": "Obter a Extensão de Navegador" + }, + "syncingComplete": { + "message": "Sincronização completada" + }, + "syncingFailed": { + "message": "A sincronização falhou" + }, + "yourVaultIsLocked": { + "message": "Seu cofre está trancado. Verifique sua identidade para continuar." + }, + "unlock": { + "message": "Desbloquear" + }, + "loggedInAsOn": { + "message": "Entrou como $EMAIL$ em $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Senha mestra inválida" + }, + "twoStepLoginConfirmation": { + "message": "A autenticação em duas etapas torna sua conta mais segura, exigindo que você verifique o seu login com outro dispositivo, como uma chave de segurança, um aplicativo de autenticação, SMS, chamada telefônica ou e-mail. A autenticação em duas etapas pode ser ativada no cofre web em bitwarden.com. Você deseja visitar o site agora?" + }, + "twoStepLogin": { + "message": "Login em Duas Etapas" + }, + "vaultTimeout": { + "message": "Tempo Limite do Cofre" + }, + "vaultTimeoutDesc": { + "message": "Escolha quando o tempo limite do seu cofre irá se esgotar e execute a ação selecionada." + }, + "immediately": { + "message": "Imediatamente" + }, + "tenSeconds": { + "message": "10 segundos" + }, + "twentySeconds": { + "message": "20 segundos" + }, + "thirtySeconds": { + "message": "30 segundos" + }, + "oneMinute": { + "message": "1 minuto" + }, + "twoMinutes": { + "message": "2 minutos" + }, + "fiveMinutes": { + "message": "5 minutos" + }, + "fifteenMinutes": { + "message": "15 minutos" + }, + "thirtyMinutes": { + "message": "30 minutos" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 horas" + }, + "onIdle": { + "message": "Quando o Sistema estiver Inativo" + }, + "onSleep": { + "message": "Quando o Sistema Hibernar" + }, + "onLocked": { + "message": "Quando o Sistema estiver Bloqueado" + }, + "onRestart": { + "message": "Ao Reiniciar" + }, + "never": { + "message": "Nunca" + }, + "security": { + "message": "Segurança" + }, + "clearClipboard": { + "message": "Limpar Área de Transferência", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Limpar automaticamente os valores copiados da sua área de transferência.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Desativar Ícones de Sites" + }, + "disableFaviconDesc": { + "message": "Os ícones de sites fornecem uma imagem reconhecível próxima de cada item de credencial no seu cofre." + }, + "enableMinToTray": { + "message": "Minimizar para Ícone da Bandeja" + }, + "enableMinToTrayDesc": { + "message": "Ao minimizar a janela, mostra um ícone na bandeja do sistema." + }, + "enableMinToMenuBar": { + "message": "Minimizar para a barra de menu" + }, + "enableMinToMenuBarDesc": { + "message": "Ao minimizar a janela, mostra um ícone na barra de menus." + }, + "enableCloseToTray": { + "message": "Fechar para Ícone da Bandeja" + }, + "enableCloseToTrayDesc": { + "message": "Ao fechar a janela, mostra um ícone na bandeja do sistema." + }, + "enableCloseToMenuBar": { + "message": "Fechar para barra de menu" + }, + "enableCloseToMenuBarDesc": { + "message": "Ao fechar a janela, mostra um ícone na barra de menu." + }, + "enableTray": { + "message": "Ativar Ícone de Bandeja" + }, + "enableTrayDesc": { + "message": "Sempre mostrar um ícone na bandeja do sistema." + }, + "startToTray": { + "message": "Iniciar com o ícone para a Bandeja" + }, + "startToTrayDesc": { + "message": "Quando o aplicativo for iniciado, apenas mostrar um ícone na bandeja do sistema." + }, + "startToMenuBar": { + "message": "Iniciar na barra de menu" + }, + "startToMenuBarDesc": { + "message": "Quando o aplicativo for iniciado, apenas mostrar um ícone na barra de menu." + }, + "openAtLogin": { + "message": "Iniciar automaticamente ao iniciar sessão" + }, + "openAtLoginDesc": { + "message": "Inicia o aplicativo Bitwarden Desktop automaticamente no logon." + }, + "alwaysShowDock": { + "message": "Exibir sempre na Dock" + }, + "alwaysShowDockDesc": { + "message": "Mostrar o ícone do Bitwarden na Dock, mesmo quando minimizado para a barra de menu." + }, + "confirmTrayTitle": { + "message": "Confirmar desativação da bandeja" + }, + "confirmTrayDesc": { + "message": "Desativar esta configuração também desativará todas as outras configurações relacionadas à bandeja." + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Altere o idioma utilizado pelo aplicativo. É necessário reiniciar." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Altere o tema de cores do aplicativo." + }, + "dark": { + "message": "Escuro", + "description": "Dark color" + }, + "light": { + "message": "Claro", + "description": "Light color" + }, + "copy": { + "message": "Copiar", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Procurar Por Atualizações" + }, + "version": { + "message": "Versão $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Reiniciar Para Atualizar" + }, + "restartToUpdateDesc": { + "message": "A versão $VERSION_NUM$ está pronta para ser instalada. Você deve reiniciar o Bitwarden para completar a instalação. Você quer reiniciar e atualizar agora?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Atualização Disponível" + }, + "updateAvailableDesc": { + "message": "Uma atualização foi encontrada. Você quer baixá-la agora?" + }, + "restart": { + "message": "Reiniciar" + }, + "later": { + "message": "Mais Tarde" + }, + "noUpdatesAvailable": { + "message": "Não há atualizações disponíveis no momento. Você está usando a versão mais recente." + }, + "updateError": { + "message": "Erro na Atualização" + }, + "unknown": { + "message": "Desconhecido" + }, + "copyUsername": { + "message": "Copiar Nome de Usuário" + }, + "copyNumber": { + "message": "Copiar Número", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copiar Código de Segurança", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Assinatura Premium" + }, + "premiumManage": { + "message": "Gerenciar Plano" + }, + "premiumManageAlert": { + "message": "Você pode gerenciar a sua assinatura premium no cofre web em bitwarden.com. Você deseja visitar o site agora?" + }, + "premiumRefresh": { + "message": "Atualizar Assinatura" + }, + "premiumNotCurrentMember": { + "message": "Você não é um membro premium atualmente." + }, + "premiumSignUpAndGet": { + "message": "Registe-se para uma assinatura premium e obtenha:" + }, + "premiumSignUpStorage": { + "message": "1 GB de armazenamento de arquivos encriptados." + }, + "premiumSignUpTwoStep": { + "message": "Opções de autenticação em duas etapas adicionais como YubiKey, FIDO U2F, e Duo." + }, + "premiumSignUpReports": { + "message": "Higiene de senha, saúde da conta, e relatórios sobre violação de dados para manter o seu cofre seguro." + }, + "premiumSignUpTotp": { + "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre." + }, + "premiumSignUpSupport": { + "message": "Prioridade no suporte ao cliente." + }, + "premiumSignUpFuture": { + "message": "Todos os recursos premium no futuro. Mais em breve!" + }, + "premiumPurchase": { + "message": "Comprar Premium" + }, + "premiumPurchaseAlert": { + "message": "Você pode comprar a assinatura premium no cofre web em bitwarden.com. Você deseja visitar o site agora?" + }, + "premiumCurrentMember": { + "message": "Você é um membro premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Obrigado por apoiar o Bitwarden." + }, + "premiumPrice": { + "message": "Tudo por apenas $PRICE$ /ano!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Atualização completada" + }, + "passwordHistory": { + "message": "Histórico de Senha" + }, + "clear": { + "message": "Limpar", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Não existem senhas para listar." + }, + "undo": { + "message": "Desfazer" + }, + "redo": { + "message": "Refazer" + }, + "cut": { + "message": "Cortar", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Colar", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Selecionar Tudo" + }, + "zoomIn": { + "message": "Ampliar" + }, + "zoomOut": { + "message": "Reduzir" + }, + "resetZoom": { + "message": "Redefinir Zoom" + }, + "toggleFullScreen": { + "message": "Alternar para Tela Cheia" + }, + "reload": { + "message": "Recarregar" + }, + "toggleDevTools": { + "message": "Alternar para Ferramentas de Desenvolvedor" + }, + "minimize": { + "message": "Minimizar", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Trazer Tudo para a Frente", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Sobre o Bitwarden" + }, + "services": { + "message": "Serviços" + }, + "hideBitwarden": { + "message": "Ocultar o Bitwarden" + }, + "hideOthers": { + "message": "Ocultar Outros" + }, + "showAll": { + "message": "Mostrar Todos" + }, + "quitBitwarden": { + "message": "Sair do Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copiado(a)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Ajuda" + }, + "window": { + "message": "Janela" + }, + "checkPassword": { + "message": "Verifique se a senha foi exposta." + }, + "passwordExposed": { + "message": "Esta senha foi exposta $VALUE$ vez(es) em brechas de dados. Você deve alterá-la.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Esta senha não foi encontrada em brechas de dados conhecidas. Deve ser seguro de usar." + }, + "baseDomain": { + "message": "Domínio de base", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Servidor", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exato" + }, + "startsWith": { + "message": "Começa com" + }, + "regEx": { + "message": "Expressão regular", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Detecção de Correspondência", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Detecção de correspondência padrão", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Alternar Opções" + }, + "organization": { + "message": "Organização", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Padrão" + }, + "exit": { + "message": "Sair" + }, + "showHide": { + "message": "Mostrar / Ocultar", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Ocultar para a Bandeja" + }, + "alwaysOnTop": { + "message": "Sempre no Topo", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Atualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Senha Atualizada", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exportar Cofre" + }, + "fileFormat": { + "message": "Formato do Arquivo" + }, + "warning": { + "message": "AVISO", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirmar Exportação do Cofre" + }, + "exportWarningDesc": { + "message": "Esta exportação contém os dados do seu cofre em um formato não criptografado. Você não deve armazenar ou enviar o arquivo exportado por canais inseguros (como e-mail). Exclua o arquivo imediatamente após terminar de usá-lo." + }, + "encExportKeyWarningDesc": { + "message": "Esta exportação criptografa seus dados usando a chave de criptografia da sua conta. Se você rotacionar a chave de criptografia da sua conta, você deve exportar novamente, já que você não será capaz de descriptografar este arquivo de exportação." + }, + "encExportAccountWarningDesc": { + "message": "As chaves de criptografia de conta são únicas para cada conta de usuário do Bitwarden, então você não pode importar uma exportação criptografada para uma conta diferente." + }, + "noOrganizationsList": { + "message": "Você não pertence a nenhuma organização. Organizações permitem-lhe compartilhar itens em segurança com outros usuários." + }, + "noCollectionsInList": { + "message": "Não há coleções para listar." + }, + "ownership": { + "message": "Propriedade" + }, + "whoOwnsThisItem": { + "message": "Quem possui este item?" + }, + "strong": { + "message": "Forte", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Boa", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Fraca", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Senha Mestra Fraca" + }, + "weakMasterPasswordDesc": { + "message": "A senha mestra que você selecionou está fraca. Você deve usar uma senha mestra forte (ou uma frase-passe) para proteger a sua conta Bitwarden adequadamente. Tem certeza que deseja usar esta senha mestra?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Desbloquear com o PIN" + }, + "setYourPinCode": { + "message": "Defina o seu código PIN para desbloquear o Bitwarden. Suas configurações de PIN serão redefinidas se alguma vez você encerrar completamente toda a sessão do aplicativo." + }, + "pinRequired": { + "message": "O código PIN é necessário." + }, + "invalidPin": { + "message": "Código PIN inválido." + }, + "unlockWithWindowsHello": { + "message": "Desbloquear com o Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verifique para o Bitwarden." + }, + "unlockWithTouchId": { + "message": "Desbloquear com o Touch ID" + }, + "touchIdConsentMessage": { + "message": "desbloquear o seu cofre" + }, + "noAutoPromptWindowsHello": { + "message": "Não solicite por Windows Hello na inicialização." + }, + "noAutoPromptTouchId": { + "message": "Não solicite por Touch ID na inicialização." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloquear com senha mestra ao reiniciar" + }, + "preferences": { + "message": "Preferências" + }, + "enableMenuBar": { + "message": "Ativar Ícone da Barra de Menu" + }, + "enableMenuBarDesc": { + "message": "Sempre mostrar um ícone na barra de menu." + }, + "hideToMenuBar": { + "message": "Ocultar para a Barra de Menu" + }, + "selectOneCollection": { + "message": "Você deve selecionar pelo menos uma coleção." + }, + "premiumUpdated": { + "message": "Você atualizou para premium." + }, + "restore": { + "message": "Restaurar" + }, + "premiumManageAlertAppStore": { + "message": "Você pode gerenciar sua assinatura da App Store. Você quer visitar a App Store agora?" + }, + "legal": { + "message": "Aspectos Legais", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Termos de Serviço" + }, + "privacyPolicy": { + "message": "Política de Privacidade" + }, + "unsavedChangesConfirmation": { + "message": "Você tem certeza que deseja sair? Se sair agora, as suas informações atuais não serão salvas." + }, + "unsavedChangesTitle": { + "message": "Alterações não Salvas" + }, + "clone": { + "message": "Clonar" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Uma ou mais políticas da organização estão afetando as suas configurações do gerador." + }, + "vaultTimeoutAction": { + "message": "Ação de Tempo Limite do Cofre" + }, + "vaultTimeoutActionLockDesc": { + "message": "Um cofre bloqueado requer que você reinsira a sua senha mestra para entrar novamente." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Uma sessão encerrada com o cofre requer que você autentique-se novamente para acessá-lo de novo." + }, + "lock": { + "message": "Bloquear", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Lixeira", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Pesquisar na lixeira" + }, + "permanentlyDeleteItem": { + "message": "Excluir o Item Permanentemente" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Você tem certeza que deseja excluir permanentemente esse item?" + }, + "permanentlyDeletedItem": { + "message": "Item Permanentemente Excluído" + }, + "restoreItem": { + "message": "Restaurar Item" + }, + "restoreItemConfirmation": { + "message": "Você tem certeza que deseja restaurar esse item?" + }, + "restoredItem": { + "message": "Item Restaurado" + }, + "permanentlyDelete": { + "message": "Excluir Permanentemente" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Sair irá remover todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem certeza de que deseja usar esta configuração?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmação de Ação de Tempo Limite" + }, + "enterpriseSingleSignOn": { + "message": "Iniciar Sessão Empresarial Única" + }, + "setMasterPassword": { + "message": "Definir Senha Mestra" + }, + "ssoCompleteRegistration": { + "message": "Para concluir o login com o SSO, defina uma senha mestra para acessar e proteger o seu cofre." + }, + "newMasterPass": { + "message": "Nova Senha Mestra" + }, + "confirmNewMasterPass": { + "message": "Confirme a Nova Senha Mestra" + }, + "masterPasswordPolicyInEffect": { + "message": "Uma ou mais políticas da organização exigem que a sua senha mestra cumpra aos seguintes requisitos:" + }, + "policyInEffectMinComplexity": { + "message": "Pontuação mínima de complexidade de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Comprimento mínimo de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contém um ou mais caracteres em maiúsculo" + }, + "policyInEffectLowercase": { + "message": "Contém um ou mais caracteres em minúsculo" + }, + "policyInEffectNumbers": { + "message": "Contém um ou mais números" + }, + "policyInEffectSpecial": { + "message": "Contém um ou mais dos seguintes caracteres especiais $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "A sua nova senha mestra não cumpre aos requisitos da política." + }, + "acceptPolicies": { + "message": "Ao marcar esta caixa, você concorda com o seguinte:" + }, + "acceptPoliciesError": { + "message": "Os Termos de Serviço e a Política de Privacidade não foram reconhecidos." + }, + "enableBrowserIntegration": { + "message": "Ativar integração com o navegador" + }, + "enableBrowserIntegrationDesc": { + "message": "A integração do navegador é usada para biometria no navegador." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Integração com o navegador não suportada" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Infelizmente, por ora, a integração do navegador só é suportada na versão da Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Integração com o navegador não suportada" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Infelizmente, a integração do navegador não é suportada na versão da Microsoft Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Exigir verificação para integração com o navegador" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Ative uma camada adicional de segurança, exigindo validação de frase de impressão digital ao estabelecer uma ligação entre o computador e o navegador. Quando ativado, isto requer intervenção do usuário e verificação cada vez que uma conexão é estabelecida." + }, + "approve": { + "message": "Aprovar" + }, + "verifyBrowserTitle": { + "message": "Verificar conexão do navegador" + }, + "verifyBrowserDesc": { + "message": "Por favor, certifique-se que a impressão digital mostrada é idêntica à impressão digital exibida na extensão do navegador." + }, + "biometricsNotEnabledTitle": { + "message": "Biometria não ativada" + }, + "biometricsNotEnabledDesc": { + "message": "A biometria com o navegador requer que a biometria de desktop seja ativada nas configurações primeiro." + }, + "personalOwnershipSubmitError": { + "message": "Devido a uma Política Empresarial, você está restrito de salvar itens para seu cofre pessoal. Altere a opção de Propriedade para uma organização e escolha entre as Coleções disponíveis." + }, + "hintEqualsPassword": { + "message": "Sua dica de senha não pode ser o mesmo que sua senha." + }, + "personalOwnershipPolicyInEffect": { + "message": "Uma política de organização está afetando suas opções de propriedade." + }, + "allSends": { + "message": "Todos os Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Arquivo" + }, + "sendTypeText": { + "message": "Texto" + }, + "searchSends": { + "message": "Pesquisar Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Editar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Meu Cofre" + }, + "text": { + "message": "Texto" + }, + "deletionDate": { + "message": "Data de Exclusão" + }, + "deletionDateDesc": { + "message": "O Send será eliminado permanentemente na data e hora especificadas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Data de Validade" + }, + "expirationDateDesc": { + "message": "Se definido, o acesso a este Send expirará na data e hora especificadas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Contagem Máxima de Acessos" + }, + "maxAccessCountDesc": { + "message": "Se atribuído, usuários não poderão mais acessar este Send assim que o número máximo de acessos for atingido.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Contagem Atual de Acessos" + }, + "disableSend": { + "message": "Desative este Send para que ninguém possa acessá-lo.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Opcionalmente exigir uma senha para os usuários acessarem este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Notas privadas sobre este Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Link do Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Link do Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Ao acessar o Send, ocultar o texto por padrão", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send Criado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send Editado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send Excluído", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nova Senha" + }, + "whatTypeOfSend": { + "message": "Que tipo de Send é este?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Criar Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "O texto que você deseja enviar." + }, + "sendFileDesc": { + "message": "O arquivo que você deseja enviar." + }, + "days": { + "message": "$DAYS$ dias", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dia" + }, + "custom": { + "message": "Personalizado" + }, + "deleteSendConfirmation": { + "message": "Você tem certeza que deseja excluir este Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copiar link do Send para a área de transferência", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copiar o link para compartilhar este Send para minha área de transferência ao salvar." + }, + "sendDisabled": { + "message": "Send desativado", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Devido a uma política corporativa, você só pode excluir um Send existente.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copiar link" + }, + "disabled": { + "message": "Desativado" + }, + "maxAccessCountReached": { + "message": "Número máximo de acessos atingido" + }, + "expired": { + "message": "Expirado" + }, + "pendingDeletion": { + "message": "Exclusão pendente" + }, + "webAuthnAuthenticate": { + "message": "Autenticar WebAuthn" + }, + "hideEmail": { + "message": "Ocultar meu endereço de e-mail dos destinatários." + }, + "sendOptionsPolicyInEffect": { + "message": "Uma ou mais políticas da organização estão afetando as suas opções de Send." + }, + "emailVerificationRequired": { + "message": "Verificação de E-mail Necessária" + }, + "emailVerificationRequiredDesc": { + "message": "Você precisa verificar o seu e-mail para usar este recurso." + }, + "passwordPrompt": { + "message": "Solicitação nova de senha mestra" + }, + "passwordConfirmation": { + "message": "Confirmação de senha mestra" + }, + "passwordConfirmationDesc": { + "message": "Esta ação está protegida. Para continuar, por favor, reinsira a sua senha mestra para verificar sua identidade." + }, + "updatedMasterPassword": { + "message": "Senha Mestra Atualizada" + }, + "updateMasterPassword": { + "message": "Atualizar Senha Mestra" + }, + "updateMasterPasswordWarning": { + "message": "Sua Senha Mestra foi alterada recentemente por um administrador de sua organização. Para acessar o cofre, você precisa atualizá-la agora. O processo desconectará você da sessão atual, exigindo que você inicie a sessão novamente. Sessões ativas em outros dispositivos podem continuar ativas por até uma hora." + }, + "hours": { + "message": "Horas" + }, + "minutes": { + "message": "Minutos" + }, + "vaultTimeoutPolicyInEffect": { + "message": "As políticas da sua organização estão afetando o tempo limite do seu cofre. O Tempo Limite Máximo permitido do Cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "O tempo limite do seu cofre excede as restrições definidas por sua organização." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Inscrição Automática" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Esta organização possui uma política empresarial que irá inscrevê-lo automaticamente na redefinição de senha. A inscrição permitirá que os administradores da organização alterem sua senha mestra." + }, + "vaultExportDisabled": { + "message": "Exportação de Cofre Desativada" + }, + "personalVaultExportPolicyInEffect": { + "message": "Uma ou mais políticas da organização impdem que você exporte seu cofre pessoal." + }, + "addAccount": { + "message": "Adicionar Conta" + }, + "removeMasterPassword": { + "message": "Remover Senha Mestra" + }, + "removedMasterPassword": { + "message": "Senha mestra removida." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ está usando SSO com um servidor de chaves auto-hospedado. Não é mais necessária uma senha mestra para os membros desta organização entrarem.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Sair da Organização" + }, + "leaveOrganizationConfirmation": { + "message": "Você tem certeza que deseja sair desta organização?" + }, + "leftOrganization": { + "message": "Você saiu da organização." + }, + "ssoKeyConnectorUnavailable": { + "message": "Não foi possível acessar o conector de chave, tente novamente mais tarde." + }, + "lockAllVaults": { + "message": "Bloquear Todos os Cofres" + }, + "accountLimitReached": { + "message": "Não mais do que 5 contas podem estar logadas ao mesmo tempo." + }, + "accountPreferences": { + "message": "Preferências" + }, + "appPreferences": { + "message": "Configurações do Aplicativo (Todas as Contas)" + }, + "accountSwitcherLimitReached": { + "message": "Limite de Contas atingido. Saia de uma conta para adicionar outra." + }, + "settingsTitle": { + "message": "Configurações do Aplicativo para $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Trocar de Conta" + }, + "options": { + "message": "Opções" + }, + "sessionTimeout": { + "message": "Sua sessão expirou. Por favor, volte e tente iniciar a sessão novamente." + }, + "exportingPersonalVaultTitle": { + "message": "Exportação do Cofre Pessoal" + }, + "exportingPersonalVaultDescription": { + "message": "Apenas os itens pessoais do cofre associados com $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json new file mode 100644 index 0000000000..346685749b --- /dev/null +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -0,0 +1,1740 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtros" + }, + "allItems": { + "message": "Todos os itens" + }, + "favorites": { + "message": "Favoritos" + }, + "types": { + "message": "Tipos" + }, + "typeLogin": { + "message": "Credencial" + }, + "typeCard": { + "message": "Cartão" + }, + "typeIdentity": { + "message": "Identidade" + }, + "typeSecureNote": { + "message": "Nota segura" + }, + "folders": { + "message": "Pastas" + }, + "collections": { + "message": "Coleções" + }, + "searchVault": { + "message": "Pesquisar cofre" + }, + "addItem": { + "message": "Adicionar item" + }, + "shared": { + "message": "Partilhado" + }, + "share": { + "message": "Partilhar" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Anexos" + }, + "viewItem": { + "message": "Ver item" + }, + "name": { + "message": "Nome" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Novo URI" + }, + "username": { + "message": "Nome de utilizador" + }, + "password": { + "message": "Palavra-passe" + }, + "passphrase": { + "message": "Frase-passe" + }, + "editItem": { + "message": "Editar item" + }, + "emailAddress": { + "message": "Endereço de email" + }, + "verificationCodeTotp": { + "message": "Código de verificação (TOTP)" + }, + "website": { + "message": "Website" + }, + "notes": { + "message": "Notas" + }, + "customFields": { + "message": "Campos personalizados" + }, + "launch": { + "message": "Iniciar" + }, + "copyValue": { + "message": "Copiar valor", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimizar ao copiar para a área de transferência" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimizar ao copiar dados de um item para a área de transferência." + }, + "toggleVisibility": { + "message": "Alternar visibilidade" + }, + "toggleCollapse": { + "message": "Alternar colapso", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Titular do cartão" + }, + "number": { + "message": "Número" + }, + "brand": { + "message": "Marca" + }, + "expiration": { + "message": "Expiração" + }, + "securityCode": { + "message": "Código de segurança" + }, + "identityName": { + "message": "Nome de identidade" + }, + "company": { + "message": "Empresa" + }, + "ssn": { + "message": "Número de segurança social" + }, + "passportNumber": { + "message": "Número do passaporte" + }, + "licenseNumber": { + "message": "Número da licença" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telefone" + }, + "address": { + "message": "Endereço" + }, + "premiumRequired": { + "message": "Premium requerido" + }, + "premiumRequiredDesc": { + "message": "É requerida uma adesão premium para utilizar esta funcionalidade." + }, + "errorOccurred": { + "message": "Ocorreu um erro." + }, + "error": { + "message": "Erro" + }, + "january": { + "message": "Janeiro" + }, + "february": { + "message": "Fevereiro" + }, + "march": { + "message": "Março" + }, + "april": { + "message": "Abril" + }, + "may": { + "message": "Maio" + }, + "june": { + "message": "Junho" + }, + "july": { + "message": "Julho" + }, + "august": { + "message": "Agosto" + }, + "september": { + "message": "Setembro" + }, + "october": { + "message": "Outubro" + }, + "november": { + "message": "Novembro" + }, + "december": { + "message": "Dezembro" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Título" + }, + "mr": { + "message": "Sr" + }, + "mrs": { + "message": "Sra" + }, + "ms": { + "message": "Sra" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mês de expiração" + }, + "expirationYear": { + "message": "Ano de expiração" + }, + "select": { + "message": "Selecionar" + }, + "other": { + "message": "Outros" + }, + "generatePassword": { + "message": "Gerar palavra-passe" + }, + "type": { + "message": "Tipo" + }, + "firstName": { + "message": "Primeiro nome" + }, + "middleName": { + "message": "Nome do meio" + }, + "lastName": { + "message": "Último nome" + }, + "address1": { + "message": "Endereço 1" + }, + "address2": { + "message": "Endereço 2" + }, + "address3": { + "message": "Endereço 3" + }, + "cityTown": { + "message": "Cidade / localidade" + }, + "stateProvince": { + "message": "Estado / província" + }, + "zipPostalCode": { + "message": "Código postal" + }, + "country": { + "message": "País" + }, + "save": { + "message": "Guardar" + }, + "cancel": { + "message": "Cancelar" + }, + "delete": { + "message": "Eliminar" + }, + "favorite": { + "message": "Favorito" + }, + "edit": { + "message": "Editar" + }, + "authenticatorKeyTotp": { + "message": "Chave de autenticador (TOTP)" + }, + "folder": { + "message": "Pasta" + }, + "newCustomField": { + "message": "Novo campo personalizado" + }, + "value": { + "message": "Valor" + }, + "dragToSort": { + "message": "Arraste para ordenar" + }, + "cfTypeText": { + "message": "Texto" + }, + "cfTypeHidden": { + "message": "Ocultado" + }, + "cfTypeBoolean": { + "message": "Booleano" + }, + "remove": { + "message": "Remover" + }, + "nameRequired": { + "message": "O nome é requerido." + }, + "addedItem": { + "message": "Item adicionado" + }, + "editedItem": { + "message": "Item editado" + }, + "deleteItem": { + "message": "Eliminar item" + }, + "deleteFolder": { + "message": "Eliminar pasta" + }, + "deleteAttachment": { + "message": "Eliminar anexo" + }, + "deleteItemConfirmation": { + "message": "Tem a certeza de que pretende eliminar este item?" + }, + "deletedItem": { + "message": "Item enviado para o lixo" + }, + "overwritePasswordConfirmation": { + "message": "Tem a certeza de que pretende sobreescrever a palavra-passe atual?" + }, + "noneFolder": { + "message": "Nenhuma pasta", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Adicionar pasta" + }, + "editFolder": { + "message": "Editar pasta" + }, + "regeneratePassword": { + "message": "Regenerar palavra-passe" + }, + "copyPassword": { + "message": "Copiar palavra-passe" + }, + "copyUri": { + "message": "Copiar URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Comprimento" + }, + "numWords": { + "message": "Número de palavras" + }, + "wordSeparator": { + "message": "Separador de palavras" + }, + "capitalize": { + "message": "Capitalizar", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Incluir número" + }, + "close": { + "message": "Fechar" + }, + "minNumbers": { + "message": "Números mínimos" + }, + "minSpecial": { + "message": "Especiais mínimos", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Evitar caracteres ambíguos" + }, + "searchCollection": { + "message": "Pesquisar coleção" + }, + "searchFolder": { + "message": "Pesquisar pasta" + }, + "searchFavorites": { + "message": "Pesquisar favoritos" + }, + "searchType": { + "message": "Pesquisar tipo", + "description": "Search item type" + }, + "newAttachment": { + "message": "Adicionar novo anexo" + }, + "deletedAttachment": { + "message": "Anexo eliminado" + }, + "deleteAttachmentConfirmation": { + "message": "Tem a certeza de que deseja eliminar este anexo?" + }, + "attachmentSaved": { + "message": "O anexo foi guardado." + }, + "file": { + "message": "Ficheiro" + }, + "selectFile": { + "message": "Selecione um ficheiro." + }, + "maxFileSize": { + "message": "O tamanho máximo do ficheiro é de 500 MB." + }, + "updateKey": { + "message": "Não pode utilizar esta funcionalidade até atualizar a sua chave de encriptação." + }, + "options": { + "message": "Opções" + }, + "editedFolder": { + "message": "Pasta editada" + }, + "addedFolder": { + "message": "Pasta adicionada" + }, + "deleteFolderConfirmation": { + "message": "Tem certeza de que pretende eliminar esta pasta?" + }, + "deletedFolder": { + "message": "Pasta eliminada" + }, + "loginOrCreateNewAccount": { + "message": "Inicie sessão ou crie uma nova conta para aceder ao seu cofre seguro." + }, + "createAccount": { + "message": "Criar conta" + }, + "logIn": { + "message": "Iniciar sessão" + }, + "submit": { + "message": "Submeter" + }, + "masterPass": { + "message": "Palavra-passe mestra" + }, + "masterPassDesc": { + "message": "A palavra-passe mestra é a palavra-passe que utiliza para aceder ao seu cofre. É muito importante que não se esqueça da sua palavra-passe mestra. Não existe maneira de recuperar a palavra-passe no caso de a esquecer." + }, + "masterPassHintDesc": { + "message": "Uma dica da palavra-passe mestra pode ajudar a lembrar-se da sua palavra-passe se a esquecer." + }, + "reTypeMasterPass": { + "message": "Reescreva a palavra-passe mestra" + }, + "masterPassHint": { + "message": "Dica da palavra-passe mestra (opcional)" + }, + "settings": { + "message": "Definições" + }, + "passwordHint": { + "message": "Dica da palavra-passe" + }, + "enterEmailToGetHint": { + "message": "Introduza o endereço de email da sua conta para receber a dica da sua palavra-passe mestra." + }, + "getMasterPasswordHint": { + "message": "Obter dica da palavra-passe mestra" + }, + "emailRequired": { + "message": "O endereço de email é requerido." + }, + "invalidEmail": { + "message": "Endereço de email inválido." + }, + "masterPassRequired": { + "message": "A palavra-passe mestra é requerida." + }, + "masterPassLength": { + "message": "A palavra-passe mestra tem de ter pelo menos 8 caracteres." + }, + "masterPassDoesntMatch": { + "message": "A confirmação da palavra-passe mestra não corresponde." + }, + "newAccountCreated": { + "message": "A sua nova conta foi criada! Agora pode iniciar sessão." + }, + "masterPassSent": { + "message": "Enviámos-lhe um email com a dica da sua palavra-passe mestra." + }, + "unexpectedError": { + "message": "Ocorreu um erro inesperado." + }, + "itemInformation": { + "message": "Informação do item" + }, + "noItemsInList": { + "message": "Não existem itens para listar." + }, + "verificationCode": { + "message": "Código de verificação" + }, + "verificationCodeRequired": { + "message": "O código de verificação é requerido." + }, + "continue": { + "message": "Continuar" + }, + "enterVerificationCodeApp": { + "message": "Introduza o código de verificação de 6 dígitos da sua aplicação de autenticador." + }, + "enterVerificationCodeEmail": { + "message": "Introduza o código de verificação de 6 dígitos que foi enviado por email para $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Email de verificação enviado para $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Memorizar-me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Enviar código de verificação novamente" + }, + "useAnotherTwoStepMethod": { + "message": "Utilizar outro método de início de sessão de dois passos" + }, + "insertYubiKey": { + "message": "Introduza a sua YubiKey na porta USB do seu computador, depois toque no botão da mesma." + }, + "insertU2f": { + "message": "Introduza a sua chave de segurança na porta USB do seu computador. Se tiver um botão, toque no mesmo." + }, + "recoveryCodeDesc": { + "message": "Perdeu o acesso a todos os seus provedores de dois passos? Utilize o seu código de recuperação para desativar todos os provedores de dois passos da sua conta." + }, + "recoveryCodeTitle": { + "message": "Código de recuperação" + }, + "authenticatorAppTitle": { + "message": "Aplicação de autenticador" + }, + "authenticatorAppDesc": { + "message": "Utilize uma aplicação de autenticador (tal como Authy ou Google Authenticator) para gerar códigos de verificação baseados na hora.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Chave de segurança YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Utilize uma YubiKey para aceder à sua conta. Funciona com YubiKey 4, 4 Nano, 4C, e dispositivos NEO." + }, + "duoDesc": { + "message": "Verifique com Duo Security utilizando a aplicação Duo Mobile, SMS, chamada telefónica, ou chave de segurança U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifique com Duo Security para a sua organização utilizando a aplicação Duo Mobile, SMS, chamada telefónica, ou chave de segurança U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Os códigos de verificação vão ser enviados para si." + }, + "loginUnavailable": { + "message": "Início de sessão indisponível" + }, + "noTwoStepProviders": { + "message": "Esta conta tem o início de sessão de dois passos ativado, no entanto, nenhum dos provedores de início de sessão de dois passos configurados são suportados por este dispositivo." + }, + "noTwoStepProviders2": { + "message": "Por favor adicione provedores adicionais que são melhor suportados entre dispositivos (como uma aplicação de autenticador)." + }, + "twoStepOptions": { + "message": "Opções de início de sessão de dois passos" + }, + "selfHostedEnvironment": { + "message": "Ambiente auto-hospedado" + }, + "selfHostedEnvironmentFooter": { + "message": "Especifique o URL de base da sua instalação do Bitwarden alojada nas suas premissas." + }, + "customEnvironment": { + "message": "Ambiente personalizado" + }, + "customEnvironmentFooter": { + "message": "Para utilizadores avançados. Pode especificar o URL de base de cada serviço independentemente." + }, + "baseUrl": { + "message": "URL do servidor" + }, + "apiUrl": { + "message": "URL do servidor da API" + }, + "webVaultUrl": { + "message": "URL do servidor do cofre web" + }, + "identityUrl": { + "message": "URL do servidor de identidade" + }, + "notificationsUrl": { + "message": "URL do servidor de notificações" + }, + "iconsUrl": { + "message": "URL do servidor de ícones" + }, + "environmentSaved": { + "message": "Os URLs de ambiente foram guardados." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Sim" + }, + "no": { + "message": "Não" + }, + "overwritePassword": { + "message": "Sobreescrever palavra-passe" + }, + "learnMore": { + "message": "Saber mais" + }, + "featureUnavailable": { + "message": "Funcionalidade indisponível" + }, + "loggedOut": { + "message": "Sessão terminada" + }, + "loginExpired": { + "message": "A sua sessão expirou." + }, + "logOutConfirmation": { + "message": "Tem a certeza de que pretende terminar sessão?" + }, + "logOut": { + "message": "Terminar sessão" + }, + "addNewLogin": { + "message": "Adicionar nova credencial" + }, + "addNewItem": { + "message": "Adicionar novo item" + }, + "addNewFolder": { + "message": "Adicionar nova pasta" + }, + "view": { + "message": "Ver" + }, + "account": { + "message": "Conta" + }, + "loading": { + "message": "A carregar..." + }, + "lockNow": { + "message": "Bloquear agora" + }, + "passwordGenerator": { + "message": "Gerador de palavras-passe" + }, + "emailUs": { + "message": "Enviar-nos um email" + }, + "visitOurWebsite": { + "message": "Visitar o nosso website" + }, + "fileBugReport": { + "message": "Submeter um relatório de bug" + }, + "blog": { + "message": "Blogue" + }, + "followUs": { + "message": "Seguir-nos" + }, + "syncVault": { + "message": "Sincronizar cofre" + }, + "changeMasterPass": { + "message": "Alterar palavra-passe mestra" + }, + "changeMasterPasswordConfirmation": { + "message": "Pode alterar a sua palavra-passe mestra no cofre web bitwarden.com. Pretende visitar o website agora?" + }, + "fingerprintPhrase": { + "message": "Frase de impressão digital", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "A frase de impressão digital da sua conta", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ir para o cofre web" + }, + "getMobileApp": { + "message": "Obter aplicação móvel" + }, + "getBrowserExtension": { + "message": "Obter extensão de navegador" + }, + "syncingComplete": { + "message": "Sincronização completada" + }, + "syncingFailed": { + "message": "Sincronização falhada" + }, + "yourVaultIsLocked": { + "message": "O seu cofre está bloqueado. Verifique a sua palavra-passe mestra para continuar." + }, + "unlock": { + "message": "Desbloquear" + }, + "loggedInAsOn": { + "message": "Sessão iniciada como $EMAIL$ em $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Palavra-passe mestra inválida" + }, + "twoStepLoginConfirmation": { + "message": "O início de sessão de dois passos torna a sua conta mais segura ao requerer que verifique o seu início de sessão com outro dispositivo como uma chave de segurança, aplicação de autenticação, SMS, chamada telefónica, ou email. O início de sessão de dois passos pode ser ativado no cofre web bitwarden.com. Pretende visitar o website agora?" + }, + "twoStepLogin": { + "message": "Início de sessão de dois passos" + }, + "vaultTimeout": { + "message": "Expiração do cofre" + }, + "vaultTimeoutDesc": { + "message": "Escolha quando o seu cofre irá expirar e realizar a ação selecionada." + }, + "immediately": { + "message": "Imediatamente" + }, + "tenSeconds": { + "message": "10 segundos" + }, + "twentySeconds": { + "message": "20 segundos" + }, + "thirtySeconds": { + "message": "30 segundos" + }, + "oneMinute": { + "message": "1 minuto" + }, + "twoMinutes": { + "message": "2 minutos" + }, + "fiveMinutes": { + "message": "5 minutos" + }, + "fifteenMinutes": { + "message": "15 minutos" + }, + "thirtyMinutes": { + "message": "30 minutos" + }, + "oneHour": { + "message": "1 hora" + }, + "fourHours": { + "message": "4 horas" + }, + "onIdle": { + "message": "Quando o sistema está inativo" + }, + "onSleep": { + "message": "Quando o sistema está hibernado" + }, + "onLocked": { + "message": "Quando o sistema está bloqueado" + }, + "onRestart": { + "message": "Quando reiniciar" + }, + "never": { + "message": "Nunca" + }, + "security": { + "message": "Segurança" + }, + "clearClipboard": { + "message": "Limpar área de transferência", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Limpar automaticamente valores copiados da sua área de transferência.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Desativar ícones de websites" + }, + "disableFaviconDesc": { + "message": "Os ícones de websites providenciam uma imagem reconhecível ao lado de cada item de credencial no seu cofre." + }, + "enableMinToTray": { + "message": "Minimizar para ícone de bandeja" + }, + "enableMinToTrayDesc": { + "message": "Ao minimizar a janela, mostrar um ícone na bandeja do sistema em alternativa." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Fechar para ícone de bandeja" + }, + "enableCloseToTrayDesc": { + "message": "Ao fechar a janela, mostrar um ícone na bandeja do sistema em alternativa." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Ativar ícone de bandeja" + }, + "enableTrayDesc": { + "message": "Mostrar sempre um ícone na bandeja do sistema." + }, + "startToTray": { + "message": "Iniciar para o ícone de bandeja" + }, + "startToTrayDesc": { + "message": "Quando a aplicação é iniciada pela primeira vez, mostrar apenas um ícone na bandeja do sistema." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Idioma" + }, + "languageDesc": { + "message": "Altere o idioma utilizado pela aplicação. Reinício é requerido." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Altere o tema de cor da aplicação." + }, + "dark": { + "message": "Escuro", + "description": "Dark color" + }, + "light": { + "message": "Claro", + "description": "Light color" + }, + "copy": { + "message": "Copiar", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Procurar atualizações" + }, + "version": { + "message": "Versão $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Reiniciar para atualizar" + }, + "restartToUpdateDesc": { + "message": "A versão $VERSION_NUM$ está pronta para instalar. Tem de reiniciar a aplicação para completar a instalação. Pretende reiniciar e atualizar agora?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Atualização disponível" + }, + "updateAvailableDesc": { + "message": "Foi encontrada uma atualização. Pretende transferi-la agora?" + }, + "restart": { + "message": "Reiniciar" + }, + "later": { + "message": "Mais tarde" + }, + "noUpdatesAvailable": { + "message": "Não existem atualizações disponíveis atualmente. Está a atualizar a versão mais recente." + }, + "updateError": { + "message": "Erro de atualização" + }, + "unknown": { + "message": "Desconhecido" + }, + "copyUsername": { + "message": "Copiar nome de utilizador" + }, + "copyNumber": { + "message": "Copiar número", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copiar código de segurança", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Adesão Premium" + }, + "premiumManage": { + "message": "Gerir adesão" + }, + "premiumManageAlert": { + "message": "Pode gerir a sua adesão premium no cofre web bitwarden.com. Pretende visitar o website agora?" + }, + "premiumRefresh": { + "message": "Atualizar adesão" + }, + "premiumNotCurrentMember": { + "message": "Não é atualmente um membro premium." + }, + "premiumSignUpAndGet": { + "message": "Registe-se para uma adesão premium e obtenha:" + }, + "premiumSignUpStorage": { + "message": "1 GB de armazenamento encriptado para anexos de ficheiros." + }, + "premiumSignUpTwoStep": { + "message": "Opções de início de sessão de dois passos adicionais como YubiKey, FIDO U2F, e Duo." + }, + "premiumSignUpReports": { + "message": "Higiene de palavras-passe, saúde das contas, e relatórios de brechas de dados para manter o seu cofre seguro." + }, + "premiumSignUpTotp": { + "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre." + }, + "premiumSignUpSupport": { + "message": "Prioridade no apoio ao cliente." + }, + "premiumSignUpFuture": { + "message": "Todas as funcionalidades premium futuras. Mais a chegar brevemente!" + }, + "premiumPurchase": { + "message": "Comprar Premium" + }, + "premiumPurchaseAlert": { + "message": "Pode comprar adesão premium no cofre web bitwarden.com. Pretende visitar o website agora?" + }, + "premiumCurrentMember": { + "message": "É um membro premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Obrigado por apoiar o Bitwarden." + }, + "premiumPrice": { + "message": "Tudo por apenas $PRICE$ /ano!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Atualização completada" + }, + "passwordHistory": { + "message": "Histórico de palavras-passe" + }, + "clear": { + "message": "Limpar", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Não existem palavras-passe para listar." + }, + "undo": { + "message": "Desfazer" + }, + "redo": { + "message": "Refazer" + }, + "cut": { + "message": "Cortar", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Colar", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Selecionar tudo" + }, + "zoomIn": { + "message": "Ampliar" + }, + "zoomOut": { + "message": "Reduzir" + }, + "resetZoom": { + "message": "Repor zoom" + }, + "toggleFullScreen": { + "message": "Alternar ecrã completo" + }, + "reload": { + "message": "Recarregar" + }, + "toggleDevTools": { + "message": "Alternar ferramentas de programador" + }, + "minimize": { + "message": "Minimizar", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Trazer tudo para a frente", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Acerca do Bitwarden" + }, + "services": { + "message": "Serviços" + }, + "hideBitwarden": { + "message": "Ocultar o Bitwarden" + }, + "hideOthers": { + "message": "Ocultar outros" + }, + "showAll": { + "message": "Mostrar todos" + }, + "quitBitwarden": { + "message": "Sair do Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copiado(a)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Ajuda" + }, + "window": { + "message": "Janela" + }, + "checkPassword": { + "message": "Verifica se a palavra-passe foi exposta." + }, + "passwordExposed": { + "message": "Esta palavra-passe foi exposta $VALUE$ vez(es) em brechas de dados. Deve alterá-la.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Esta palavra-passe não foi encontrada em nenhuma brecha de dados conhecida. Esta deve ser segura de utilizar." + }, + "baseDomain": { + "message": "Domínio base" + }, + "host": { + "message": "Servidor", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exato" + }, + "startsWith": { + "message": "Começa por" + }, + "regEx": { + "message": "Expressão regular", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Deteção de correspondência", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Deteção de correspondência predefinida", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Alternar opções" + }, + "organization": { + "message": "Organização", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Predefinido" + }, + "exit": { + "message": "Sair" + }, + "showHide": { + "message": "Mostrar / ocultar", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Ocultar para a bandeja" + }, + "alwaysOnTop": { + "message": "Sempre no topo", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Atualizado", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Palavra passe atualizada", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exportar cofre" + }, + "fileFormat": { + "message": "Formato do ficheiro" + }, + "warning": { + "message": "AVISO", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "Esta exportação contém os seus dados do cofre num formato desencriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais inseguros (como email). Elimine-o imediatamente após o utilizar." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "exportMasterPassword": { + "message": "Introduza a sua palavra-passe mestra para exportar os dados do seu cofre." + }, + "noOrganizationsList": { + "message": "Você não pertence a nenhuma organização. Organizações permitem-lhe partilhar itens em segurança com outros utilizadores." + }, + "noCollectionsInList": { + "message": "Não existem coleções para exibir." + }, + "ownership": { + "message": "Propriedade" + }, + "whoOwnsThisItem": { + "message": "Quem é o proprietário deste item?" + }, + "strong": { + "message": "Forte", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Boa", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Fraca", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Palavra-passe mestra fraca" + }, + "weakMasterPasswordDesc": { + "message": "A palavra-passe mestra que escolheu é fraca. Deve utilizar uma palavra-passe mestra forte (ou uma frase-passe) para proteger adequadamente a sua conta Bitwarden. Tem a certeza de que pretende utilizar esta palavra-passe mestra?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Desbloquear com PIN" + }, + "setYourPinCode": { + "message": "Defina o seu código PIN para desbloquear o Bitwarden. As suas definições PIN serão redefinidas se terminar sessão completamente da aplicação." + }, + "pinRequired": { + "message": "O código PIN é requerido." + }, + "invalidPin": { + "message": "Código PIN inválido." + }, + "yourVaultIsLockedPinCode": { + "message": "O seu cofre está bloqueado. Verifique o seu PIN para continuar." + }, + "unlockWithWindowsHello": { + "message": "Desbloquear com Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verificar para Bitwarden." + }, + "unlockWithTouchId": { + "message": "Desbloquear com Touch ID" + }, + "touchIdConsentMessage": { + "message": "Verificar para Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Bloquear com palavra-passe mestra ao reiniciar" + }, + "preferences": { + "message": "Preferências" + }, + "enableMenuBar": { + "message": "Ativar ícone da barra de menu" + }, + "enableMenuBarDesc": { + "message": "Mostrar sempre um ícone na barra de menu." + }, + "hideToMenuBar": { + "message": "Ocultar para a barra de menu" + }, + "selectOneCollection": { + "message": "Tem de selecionar pelo menos uma coleção." + }, + "premiumUpdated": { + "message": "Atualizou para premium." + }, + "restore": { + "message": "Restaurar" + }, + "premiumManageAlertAppStore": { + "message": "Pode gerir a sua assinatura através da App Store. Pretende visitar a App Store agora?" + }, + "legal": { + "message": "Informação legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Termos de serviço" + }, + "privacyPolicy": { + "message": "Política de privacidade" + }, + "unsavedChangesConfirmation": { + "message": "Tem a certeza que pretende sair? Se sair agora, as suas informações atuais não irão ser guardadas" + }, + "unsavedChangesTitle": { + "message": "Alterações por guardar" + }, + "clone": { + "message": "Clonar" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Uma ou mais políticas de organização estão a afetar as suas definições do gerador." + }, + "vaultTimeoutAction": { + "message": "Ação de expiração do cofre" + }, + "vaultTimeoutActionLockDesc": { + "message": "Um cofre bloqueado requer que reintroduza a sua palavra-passe mestra para aceder novamente." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Um cofre com sessão terminada requer que se volte a autenticar para o poder aceder novamente." + }, + "lock": { + "message": "Bloquear", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Lixo", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Pesquisar lixo" + }, + "permanentlyDeleteItem": { + "message": "Eliminar item permanentemente" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Tem a certeza de que pretende eliminar este item permanentemente?" + }, + "permanentlyDeletedItem": { + "message": "Item eliminado permanentemente" + }, + "restoreItem": { + "message": "Restaurar item" + }, + "restoreItemConfirmation": { + "message": "Tem a certeza de que pretende restaurar este item?" + }, + "restoredItem": { + "message": "Item restaurado" + }, + "permanentlyDelete": { + "message": "Eliminar permanentemente" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Terminar sessão irá remover todos os acessos ao seu cofre e requer autenticação online após o período de expiração. Tem a certeza de que pretende utilizar esta definição?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmação de expiração do cofre" + }, + "enterpriseSingleSignOn": { + "message": "Início de Sessão Único da Empresa" + }, + "setMasterPassword": { + "message": "Definir palavra-passe mestra" + }, + "ssoCompleteRegistration": { + "message": "Para concluir o início de sessão com SSO, por favor defina uma palavra-passe mestra para aceder e proteger o seu cofre." + }, + "newMasterPass": { + "message": "Nova palavra-passe mestra" + }, + "confirmNewMasterPass": { + "message": "Confirmar nova palavra-passe mestra" + }, + "masterPasswordPolicyInEffect": { + "message": "Uma ou mais políticas da organização requerem que a sua palavra-passe mestra cumpra aos seguintes requisitos:" + }, + "policyInEffectMinComplexity": { + "message": "Pontuação mínima de complexidade de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Comprimento mínimo de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contém um ou mais caracteres em maiúsculas" + }, + "policyInEffectLowercase": { + "message": "Contém um ou mais caracteres em minúsculas" + }, + "policyInEffectNumbers": { + "message": "Contém um ou mais números" + }, + "policyInEffectSpecial": { + "message": "Contém um ou mais dos seguintes caracteres especiais $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "A sua nova palavra-passe mestra não cumpre os requisitos da política." + }, + "acceptPolicies": { + "message": "Ao marcar esta caixa concorda com o seguinte:" + }, + "acceptPoliciesError": { + "message": "Os Termos de Serviço e a Política de Privacidade não foram aceites." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + } +} diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json new file mode 100644 index 0000000000..a15f2386b7 --- /dev/null +++ b/apps/desktop/src/locales/ro/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtre" + }, + "allItems": { + "message": "Toate elementele" + }, + "favorites": { + "message": "Favorite" + }, + "types": { + "message": "Tipuri" + }, + "typeLogin": { + "message": "Conectare" + }, + "typeCard": { + "message": "Card" + }, + "typeIdentity": { + "message": "Identitate" + }, + "typeSecureNote": { + "message": "Notă protejată" + }, + "folders": { + "message": "Dosare" + }, + "collections": { + "message": "Colecții" + }, + "searchVault": { + "message": "Căutare în seif" + }, + "addItem": { + "message": "Adăugare articol" + }, + "shared": { + "message": "Partajate" + }, + "share": { + "message": "Partajare" + }, + "moveToOrganization": { + "message": "Mutare la organizație" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ mutat la $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Alegeți o organizație la care doriți să mutați acest articol. Mutarea într-o organizație, transferă proprietatea asupra articolului către organizația respectivă. Nu veți mai fi proprietarul direct al acestui articol odată ce a fost mutat." + }, + "attachments": { + "message": "Atașamente" + }, + "viewItem": { + "message": "Afișare articol" + }, + "name": { + "message": "Denumire" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "URI nou" + }, + "username": { + "message": "Nume utilizator" + }, + "password": { + "message": "Parolă" + }, + "passphrase": { + "message": "Frază de acces" + }, + "editItem": { + "message": "Editare articol" + }, + "emailAddress": { + "message": "Adresă de e-mail" + }, + "verificationCodeTotp": { + "message": "Cod de verificare (TOTP)" + }, + "website": { + "message": "Sait web" + }, + "notes": { + "message": "Note" + }, + "customFields": { + "message": "Câmpuri particularizate" + }, + "launch": { + "message": "Lansare" + }, + "copyValue": { + "message": "Copiere valoare", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Se minimizează la copierea în clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Se minimizează când se copiază datele unui articol în clipboard." + }, + "toggleVisibility": { + "message": "Comutare vizibilitate" + }, + "toggleCollapse": { + "message": "Restrângere / Extindere", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Deținător card" + }, + "number": { + "message": "Număr card" + }, + "brand": { + "message": "Tip card" + }, + "expiration": { + "message": "Expirare" + }, + "securityCode": { + "message": "Cod de securitate (CVV/CVC)" + }, + "identityName": { + "message": "Nume identitate" + }, + "company": { + "message": "Companie" + }, + "ssn": { + "message": "Cod Numeric Personal" + }, + "passportNumber": { + "message": "Număr CI / Pașaport" + }, + "licenseNumber": { + "message": "Număr licență" + }, + "email": { + "message": "E-mail" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adresă" + }, + "premiumRequired": { + "message": "Este necesară versiunea Premium" + }, + "premiumRequiredDesc": { + "message": "Este necesar statutul de membru Premium pentru a utiliza această caracteristică." + }, + "errorOccurred": { + "message": "S-a produs o eroare." + }, + "error": { + "message": "Eroare" + }, + "january": { + "message": "ianuarie" + }, + "february": { + "message": "februarie" + }, + "march": { + "message": "martie" + }, + "april": { + "message": "aprilie" + }, + "may": { + "message": "mai" + }, + "june": { + "message": "iunie" + }, + "july": { + "message": "iulie" + }, + "august": { + "message": "august" + }, + "september": { + "message": "septembrie" + }, + "october": { + "message": "octombrie" + }, + "november": { + "message": "noiembrie" + }, + "december": { + "message": "decembrie" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titlu" + }, + "mr": { + "message": "Dl" + }, + "mrs": { + "message": "Dna" + }, + "ms": { + "message": "Dra" + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Luna expirării" + }, + "expirationYear": { + "message": "Anul expirării" + }, + "select": { + "message": "Selectare" + }, + "other": { + "message": "Altele" + }, + "generatePassword": { + "message": "Generare parolă" + }, + "type": { + "message": "Tip" + }, + "firstName": { + "message": "Prenume" + }, + "middleName": { + "message": "Al doilea prenume" + }, + "lastName": { + "message": "Nume" + }, + "fullName": { + "message": "Numele complet" + }, + "address1": { + "message": "Adresă 1" + }, + "address2": { + "message": "Adresă 2" + }, + "address3": { + "message": "Adresă 3" + }, + "cityTown": { + "message": "Localitate" + }, + "stateProvince": { + "message": "Județ" + }, + "zipPostalCode": { + "message": "Cod poștal" + }, + "country": { + "message": "Țară" + }, + "save": { + "message": "Salvare" + }, + "cancel": { + "message": "Anulare" + }, + "delete": { + "message": "Ștergere" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Editare" + }, + "authenticatorKeyTotp": { + "message": "Cheie autentificare (TOTP)" + }, + "folder": { + "message": "Dosar" + }, + "newCustomField": { + "message": "Câmp nou particularizat" + }, + "value": { + "message": "Valoare" + }, + "dragToSort": { + "message": "Trageți pentru sortare" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Ascuns" + }, + "cfTypeBoolean": { + "message": "Valoare logică" + }, + "cfTypeLinked": { + "message": "Conectat", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Valoarea conectată", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Ștergere" + }, + "nameRequired": { + "message": "Numele utilizator este obligatoriu." + }, + "addedItem": { + "message": "Articol adăugat" + }, + "editedItem": { + "message": "Articol editat" + }, + "deleteItem": { + "message": "Ștergere articol" + }, + "deleteFolder": { + "message": "Ștergere dosar" + }, + "deleteAttachment": { + "message": "Ștergere atașament" + }, + "deleteItemConfirmation": { + "message": "Sigur doriți să trimiteți în coșul de reciclare?" + }, + "deletedItem": { + "message": "Articolul a fost trimis în coșul de reciclare" + }, + "overwritePasswordConfirmation": { + "message": "Sigur doriți să suprascrieți parola curentă?" + }, + "overwriteUsername": { + "message": "Suprascrieți numele de utilizator" + }, + "overwriteUsernameConfirmation": { + "message": "Sunteți sigur că doriți să suprascrieți numele de utilizator curent?" + }, + "noneFolder": { + "message": "Fără dosar", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Adăugare dosar" + }, + "editFolder": { + "message": "Editare dosar" + }, + "regeneratePassword": { + "message": "Regenerare parolă" + }, + "copyPassword": { + "message": "Copiere parolă" + }, + "copyUri": { + "message": "Copiere URI" + }, + "copyVerificationCodeTotp": { + "message": "Copiere cod de verificare (TOTP)" + }, + "length": { + "message": "Lungime" + }, + "numWords": { + "message": "Număr de cuvinte" + }, + "wordSeparator": { + "message": "Separator de cuvinte" + }, + "capitalize": { + "message": "Se folosesc majuscule inițiale", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Se includ cifre" + }, + "close": { + "message": "Închidere" + }, + "minNumbers": { + "message": "Minimum de cifre" + }, + "minSpecial": { + "message": "Minimum de caractere speciale", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Se evită caracterele ambigue" + }, + "searchCollection": { + "message": "Căutare în colecție" + }, + "searchFolder": { + "message": "Căutare în dosar" + }, + "searchFavorites": { + "message": "Căutare în favorite" + }, + "searchType": { + "message": "Căutare în tipuri", + "description": "Search item type" + }, + "newAttachment": { + "message": "Adăugare atașament nou" + }, + "deletedAttachment": { + "message": "Atașamentul s-a șters" + }, + "deleteAttachmentConfirmation": { + "message": "Sigur doriți să ștergeți acest atașament?" + }, + "attachmentSaved": { + "message": "Atașamentul a fost salvat." + }, + "file": { + "message": "Fișier" + }, + "selectFile": { + "message": "Selectare fișier." + }, + "maxFileSize": { + "message": "Mărimea maximă a fișierului este de 500 MB." + }, + "updateKey": { + "message": "Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare." + }, + "editedFolder": { + "message": "Dosar editat" + }, + "addedFolder": { + "message": "Dosar adăugat" + }, + "deleteFolderConfirmation": { + "message": "Sigur doriți să ștergeți dosarul?" + }, + "deletedFolder": { + "message": "Dosar șters" + }, + "loginOrCreateNewAccount": { + "message": "Autentificați-vă sau creați un cont nou pentru a accesa seiful dvs. securizat." + }, + "createAccount": { + "message": "Creare cont" + }, + "logIn": { + "message": "Conectare" + }, + "submit": { + "message": "Trimitere" + }, + "masterPass": { + "message": "Parolă principală" + }, + "masterPassDesc": { + "message": "Parola principală este parola pe care o utilizați pentru a vă accesa seiful. Este foarte important să nu uitați această parolă. Nu există nicio modalitate de a recupera parola în cazul în care ați uitat-o." + }, + "masterPassHintDesc": { + "message": "Un indiciu pentru parola principală vă poate ajuta să v-o reamintiți dacă o uitați." + }, + "reTypeMasterPass": { + "message": "Reintroducere parolă principală" + }, + "masterPassHint": { + "message": "Indiciu pentru parola principală (opțional)" + }, + "settings": { + "message": "Setări" + }, + "passwordHint": { + "message": "Indiciu parolă" + }, + "enterEmailToGetHint": { + "message": "Adresa de e-mail a contului pentru primirea indiciului parolei principale." + }, + "getMasterPasswordHint": { + "message": "Obținere indiciu parolă principală" + }, + "emailRequired": { + "message": "Adresa de e-mail este necesară." + }, + "invalidEmail": { + "message": "Adresă de e-mail greșită." + }, + "masterPassRequired": { + "message": "Este parola principală este necesară." + }, + "masterPassLength": { + "message": "Parola principală trebuie să conțină minimum 8 caractere." + }, + "masterPassDoesntMatch": { + "message": "Parola principală și confirmarea ei nu coincid!" + }, + "newAccountCreated": { + "message": "Noul dvs. cont a fost creat! Acum vă puteți autentifica." + }, + "masterPassSent": { + "message": "V-am trimis un e-mail cu indiciul parolei principale." + }, + "unexpectedError": { + "message": "A survenit o eroare neașteptată." + }, + "itemInformation": { + "message": "Informații de autentificare" + }, + "noItemsInList": { + "message": "Niciun articol de afișat." + }, + "sendVerificationCode": { + "message": "Trimite un cod de verificare la adresa dvs. de e-mail" + }, + "sendCode": { + "message": "Trimitere cod" + }, + "codeSent": { + "message": "Cod trimis" + }, + "verificationCode": { + "message": "Cod de verificare" + }, + "confirmIdentity": { + "message": "Confirmați-vă identitatea pentru a continua." + }, + "verificationCodeRequired": { + "message": "Este necesar codul de verificare." + }, + "invalidVerificationCode": { + "message": "Cod de verificare nevalid" + }, + "continue": { + "message": "Continuare" + }, + "enterVerificationCodeApp": { + "message": "Introducere cod de verificare din 6 cifre din aplicația de autentificare." + }, + "enterVerificationCodeEmail": { + "message": "Introducere cod de verificare din 6 cifre care a fost trimis prin e-mail la $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "E-mailul de verificare a fost trimis la $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Memorare autentificare" + }, + "sendVerificationCodeEmailAgain": { + "message": "Retrimitere e-mail cu codul de verificare" + }, + "useAnotherTwoStepMethod": { + "message": "Utilizare de metodă diferită de autentificare în două etape" + }, + "insertYubiKey": { + "message": "Introduceți YubiKey în portul USB al calculatorului apoi atingeți butonul acestuia." + }, + "insertU2f": { + "message": "Introduceți cheia de securitate în portul USB al computerului. Dacă are un buton, apăsați-l." + }, + "recoveryCodeDesc": { + "message": "Ați pierdut accesul la toți furnizorii de autentificare în două etape? Utilizați codul de recuperare pentru a dezactiva toți acești furnizori din contul dvs." + }, + "recoveryCodeTitle": { + "message": "Cod de recuperare" + }, + "authenticatorAppTitle": { + "message": "Aplicație de autentificare" + }, + "authenticatorAppDesc": { + "message": "Utilizați o aplicație de autentificare (cum ar fi Authy sau Google Authenticator) pentru a genera codurile de verificare bazate pe timp.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Cheie de securitate YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Utilizați un YubiKey pentru a vă accesa contul. Funcționează cu dispozitivele YubiKey 4, 4 Nano, 4C și NEO." + }, + "duoDesc": { + "message": "Verificați cu Duo Security utilizând aplicația Duo Mobile, SMS, apel telefonic sau cheia de securitate U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verificați cu Duo Security pentru organizația dvs. utilizând aplicația Duo Mobile, SMS, apel telefonic sau cheia de securitate U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Utilizați orice cheie de securitate activată WebAuthn pentru a vă accesa contul." + }, + "emailTitle": { + "message": "E-mail" + }, + "emailDesc": { + "message": "Codurile de verificare vor fi trimise prin e-mail." + }, + "loginUnavailable": { + "message": "Conectare indisponibilă" + }, + "noTwoStepProviders": { + "message": "Acest cont are activată autentificarea în două etape, dar niciunul dintre furnizorii configurați pentru aceasta nu este acceptat pe acest dispozitiv." + }, + "noTwoStepProviders2": { + "message": "Adăugați furnizori suplimentari care sunt mai bine susținuți pe toate dispozitivele (cum ar fi o aplicație de autentificare)." + }, + "twoStepOptions": { + "message": "Opțiuni de autentificare în două etape" + }, + "selfHostedEnvironment": { + "message": "Mediu de găzduire personal" + }, + "selfHostedEnvironmentFooter": { + "message": "Specificați URL-ul de bază al implementări Bitwarden găzduită local." + }, + "customEnvironment": { + "message": "Mediu personalizat" + }, + "customEnvironmentFooter": { + "message": "Pentru utilizatorii avansați. Puteți specifica URL-ul de bază al fiecărui serviciu în mod independent." + }, + "baseUrl": { + "message": "URL server" + }, + "apiUrl": { + "message": "URL server API" + }, + "webVaultUrl": { + "message": "URL server seif Web" + }, + "identityUrl": { + "message": "URL server de identificare" + }, + "notificationsUrl": { + "message": "URL server de notificări" + }, + "iconsUrl": { + "message": "URL server de iconuri" + }, + "environmentSaved": { + "message": "URL-urile mediului au fost salvate." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Nu" + }, + "overwritePassword": { + "message": "Modificare parolă" + }, + "learnMore": { + "message": "Aflați mai multe" + }, + "featureUnavailable": { + "message": "Caracteristică indisponibilă" + }, + "loggedOut": { + "message": "Deconectat" + }, + "loginExpired": { + "message": "Sesiunea de autentificare a expirat." + }, + "logOutConfirmation": { + "message": "Sigur doriți să vă deconectați?" + }, + "logOut": { + "message": "Deconectare" + }, + "addNewLogin": { + "message": "Adăugare conectare nouă" + }, + "addNewItem": { + "message": "Adăugare element nou" + }, + "addNewFolder": { + "message": "Adăugare dosar nou" + }, + "view": { + "message": "Afișare" + }, + "account": { + "message": "Cont" + }, + "loading": { + "message": "Încărcare..." + }, + "lockVault": { + "message": "Blocare seif" + }, + "passwordGenerator": { + "message": "Generator de parole" + }, + "contactUs": { + "message": "Contactați-ne" + }, + "getHelp": { + "message": "Obținere ajutor" + }, + "fileBugReport": { + "message": "Înregistrare raport de erori" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Urmăriți-ne" + }, + "syncVault": { + "message": "Sincronizare seif" + }, + "changeMasterPass": { + "message": "Schimbare parolă principală" + }, + "changeMasterPasswordConfirmation": { + "message": "Puteți modifica parola principală pe saitul web bitwarden.com. Doriți să vizitați saitul acum?" + }, + "fingerprintPhrase": { + "message": "Frază amprentă", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Fraza amprentă a contului dvs.", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Accesare seif web" + }, + "getMobileApp": { + "message": "Obținere aplicație pentru mobil" + }, + "getBrowserExtension": { + "message": "Obținere extensie pentru browser" + }, + "syncingComplete": { + "message": "Sincronizare completă" + }, + "syncingFailed": { + "message": "Sincronizare eșuată" + }, + "yourVaultIsLocked": { + "message": "Seiful dvs. este blocat. Verificați-vă identitatea pentru a continua." + }, + "unlock": { + "message": "Deblocare" + }, + "loggedInAsOn": { + "message": "Autentificat ca $EMAIL$ pe $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Parolă principală incorectă" + }, + "twoStepLoginConfirmation": { + "message": "Autentificarea în două etape întărește siguranța contului dvs. prin solicitarea unei confirmări de autentificare cu un alt dispozitiv, cum ar fi: o cheie de securitate, o aplicație de autentificare, un SMS, un apel telefonic sau un e-mail. Autentificarea în două etape poate fi activată în seiful web bitwarden.com. Doriți să vizitați saitul acum?" + }, + "twoStepLogin": { + "message": "Autentificare în două etape" + }, + "vaultTimeout": { + "message": "Expirare seif" + }, + "vaultTimeoutDesc": { + "message": "Alegeți când seiful dvs. va expira și va efectua acțiunea selectată." + }, + "immediately": { + "message": "Imediat" + }, + "tenSeconds": { + "message": "10 secunde" + }, + "twentySeconds": { + "message": "20 de secunde" + }, + "thirtySeconds": { + "message": "30 de secunde" + }, + "oneMinute": { + "message": "1 minut" + }, + "twoMinutes": { + "message": "2 minute" + }, + "fiveMinutes": { + "message": "5 minute" + }, + "fifteenMinutes": { + "message": "15 minute" + }, + "thirtyMinutes": { + "message": "30 de minute" + }, + "oneHour": { + "message": "1 oră" + }, + "fourHours": { + "message": "4 ore" + }, + "onIdle": { + "message": "Când sistemul este inactiv" + }, + "onSleep": { + "message": "Când sistemul este în repaus" + }, + "onLocked": { + "message": "La blocarea sistemului" + }, + "onRestart": { + "message": "La repornire" + }, + "never": { + "message": "Niciodată" + }, + "security": { + "message": "Securitate" + }, + "clearClipboard": { + "message": "Golire clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Se șterg automat valorile copiate din clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Se dezactivează iconurile saiturilor" + }, + "disableFaviconDesc": { + "message": "Iconurile saiturilor oferă o imagine identificabilă lângă fiecare element de conectare din seiful dvs." + }, + "enableMinToTray": { + "message": "Se minimizează în zona de notificare" + }, + "enableMinToTrayDesc": { + "message": "La minimizarea ferestrei se afișează în schimb un icon în zona de notificare." + }, + "enableMinToMenuBar": { + "message": "Minimizați în bara de meniu" + }, + "enableMinToMenuBarDesc": { + "message": "La minimizarea ferestrei, se afișează un icon în bara de meniu." + }, + "enableCloseToTray": { + "message": "Se închide în zona de notificare" + }, + "enableCloseToTrayDesc": { + "message": "La închiderea ferestrei se afișează în schimb un icon în zona de notificare." + }, + "enableCloseToMenuBar": { + "message": "Închideți în bara de meniu" + }, + "enableCloseToMenuBarDesc": { + "message": "La închiderea ferestrei se afișează un icon în bara de meniu." + }, + "enableTray": { + "message": "Se activează un icon în zona de notificare" + }, + "enableTrayDesc": { + "message": "Se afișează întotdeauna un icon în zona de notificare." + }, + "startToTray": { + "message": "Se pornește în bara de notificări" + }, + "startToTrayDesc": { + "message": "Când aplicația este pornită, se afișează numai un icon în bara de notificări." + }, + "startToMenuBar": { + "message": "Pornire în bara de meniu" + }, + "startToMenuBarDesc": { + "message": "Când aplicația este pornită, se afișează numai un icon în bara de meniu." + }, + "openAtLogin": { + "message": "Pornire automată la conectare" + }, + "openAtLoginDesc": { + "message": "Pornește aplicația Bitwarden Desktop automat la autentificare." + }, + "alwaysShowDock": { + "message": "Se afișează întotdeauna în Dock" + }, + "alwaysShowDockDesc": { + "message": "Afișează pictograma Bitwarden în Dock chiar și atunci când este minimizată în bara de meniu." + }, + "confirmTrayTitle": { + "message": "Confirmați dezactivarea zonei de notificare" + }, + "confirmTrayDesc": { + "message": "Dezactivarea acestei setări va dezactiva, de asemenea, toate celelalte setări legate de zona de notificare." + }, + "language": { + "message": "Limbă" + }, + "languageDesc": { + "message": "Schimbă limba utilizată de aplicație. Este necesară repornirea." + }, + "theme": { + "message": "Temă" + }, + "themeDesc": { + "message": "Schimbă tema de culori a aplicației." + }, + "dark": { + "message": "Întunecat", + "description": "Dark color" + }, + "light": { + "message": "Luminos", + "description": "Light color" + }, + "copy": { + "message": "Copiere", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Căutare actualizări" + }, + "version": { + "message": "Versiunea $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Reporniți pentru actualizare" + }, + "restartToUpdateDesc": { + "message": "Versiunea $VERSION_NUM$ este gata pentru instalare. Trebuie să reporniți Bitwarden pentru a finaliza instalarea. Doriți să reporniți și să actualizați acum?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update disponibil" + }, + "updateAvailableDesc": { + "message": "A fost găsit un update. Doriți să îl descărcați acum?" + }, + "restart": { + "message": "Repornire" + }, + "later": { + "message": "Mai târziu" + }, + "noUpdatesAvailable": { + "message": "În prezent nu sunt disponibile actualizări. Folosiți cea mai recentă versiune." + }, + "updateError": { + "message": "Eroare la actualizare" + }, + "unknown": { + "message": "Necunoscut" + }, + "copyUsername": { + "message": "Copiere nume utilizator" + }, + "copyNumber": { + "message": "Copiere număr", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copiere cod de securitate", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Membru Premium" + }, + "premiumManage": { + "message": "Gestionare statut de membru" + }, + "premiumManageAlert": { + "message": "Vă puteți gestiona abonamentul pe seiful web bitwarden.com. Doriți să vizitați saitul acum?" + }, + "premiumRefresh": { + "message": "Actualizare statut de membru" + }, + "premiumNotCurrentMember": { + "message": "În prezent nu sunteți un membru Premium." + }, + "premiumSignUpAndGet": { + "message": "Înscrieți-vă pentru statutul de membru Premium și obțineți:" + }, + "premiumSignUpStorage": { + "message": "1 GB spațiu de stocare criptat pentru atașamente de fișiere." + }, + "premiumSignUpTwoStep": { + "message": "Opțiuni adiționale de autentificare în două etape, cum ar fi YubiKey, FIDO U2F și Duo." + }, + "premiumSignUpReports": { + "message": "Rapoarte privind igiena parolelor, sănătatea contului și breșele de date pentru a vă păstra seiful în siguranță." + }, + "premiumSignUpTotp": { + "message": "Generatorul codului de verificare TOTP (2FA) pentru autentificările din seif." + }, + "premiumSignUpSupport": { + "message": "Asistență prioritară pentru clienți." + }, + "premiumSignUpFuture": { + "message": "Toate caracteristicile premium viitoare. Mai multe în curând!" + }, + "premiumPurchase": { + "message": "Achiziționare abonament Premium" + }, + "premiumPurchaseAlert": { + "message": "Puteți achiziționa un abonament premium pe saitul web bitwarden.com. Doriți să vizitați saitul acum?" + }, + "premiumCurrentMember": { + "message": "Sunteți un membru premium!" + }, + "premiumCurrentMemberThanks": { + "message": "Vă mulțumim pentru susținerea Bitwarden." + }, + "premiumPrice": { + "message": "Totul pentru doar $PRICE$ /an!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Reîmprospătare completă" + }, + "passwordHistory": { + "message": "Istoric parole" + }, + "clear": { + "message": "Ștergere", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Nicio parolă de afișat." + }, + "undo": { + "message": "Anulare" + }, + "redo": { + "message": "Refacere" + }, + "cut": { + "message": "Tăiere", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Lipire", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Selectare totală" + }, + "zoomIn": { + "message": "Mărire" + }, + "zoomOut": { + "message": "Micșorare" + }, + "resetZoom": { + "message": "Resetare Zoom" + }, + "toggleFullScreen": { + "message": "Comutare ecran complet" + }, + "reload": { + "message": "Reîncărcare" + }, + "toggleDevTools": { + "message": "Comutare instrumente de dezvoltare" + }, + "minimize": { + "message": "Minimizare", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Aducere tot în față", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Despre Bitwarden" + }, + "services": { + "message": "Servicii" + }, + "hideBitwarden": { + "message": "Ascundere Bitwarden" + }, + "hideOthers": { + "message": "Ascunde celelalte" + }, + "showAll": { + "message": "Afișare tot" + }, + "quitBitwarden": { + "message": "Închidere Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ s-a copiat", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Ajutor" + }, + "window": { + "message": "Fereastră" + }, + "checkPassword": { + "message": "Verificați dacă parola a fost dezvăluită." + }, + "passwordExposed": { + "message": "Această parolă a fost dezvăluită de $VALUE$ ori în breșe de date. Ar trebui să o schimbați.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Aceasta parola nu a fost găsită în nicio breșă de date cunoscută. Ar trebui să fie sigură de utilizat." + }, + "baseDomain": { + "message": "Domeniu de bază", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Nume de domeniu", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Gazdă", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Începe cu" + }, + "regEx": { + "message": "Expresie regulată", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Detectare de potrivire", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Detectare de potrivire implicită", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Activare/Dezactivare opțiuni" + }, + "organization": { + "message": "Organizație", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Prestabilită" + }, + "exit": { + "message": "Ieșire" + }, + "showHide": { + "message": "Afișare / Ascundere", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Ascunde în tava sistem" + }, + "alwaysOnTop": { + "message": "Mereu Deasupra", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "S-a actualizat", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parola s-a actualizat", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export seif" + }, + "fileFormat": { + "message": "Format fișier" + }, + "warning": { + "message": "AVERTISMENT", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirmare export seif" + }, + "exportWarningDesc": { + "message": "Acest export conține datele dvs. din seif în format necriptat. Nu ar trebui să stocați sau să trimiteți fișierul pe canale nesecurizate (cum ar fi e-mail). Ștergeți-l imediat după ce nu îl mai folosiți." + }, + "encExportKeyWarningDesc": { + "message": "Acest export criptează datele, utilizând cheia de criptare a contului. Dacă revocați vreodată cheia de criptare a contului dvs., ar trebui să exportați din nou, deoarece nu veți putea decripta acest fișier de export." + }, + "encExportAccountWarningDesc": { + "message": "Cheile de criptare a contului sunt unice fiecărui cont de utilizator Bitwarden, astfel încât nu puteți importa un export criptat într-un cont diferit." + }, + "noOrganizationsList": { + "message": "Nu aparțineți niciunei organizații. Organizațiile vă permit să partajați în siguranță articole cu alți utilizatori." + }, + "noCollectionsInList": { + "message": "Nicio colecție de afișat." + }, + "ownership": { + "message": "Proprietar" + }, + "whoOwnsThisItem": { + "message": "Cine deține acest element?" + }, + "strong": { + "message": "Puternică", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Bună", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Slabă", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Parolă principală slabă" + }, + "weakMasterPasswordDesc": { + "message": "Parola principală aleasă este slabă. Ar trebui să folosiți o parolă principală (sau o frază de acces) puternică pentru a vă proteja corespunzător contul Bitwarden. Sigur doriți să folosiți această parolă principală?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Deblocare cu codul PIN" + }, + "setYourPinCode": { + "message": "Stabiliți codul PIN de deblocare Bitwarden. Setările codului PIN vor fi reinițializate dacă vă deconectați vreodată din aplicație." + }, + "pinRequired": { + "message": "Codul PIN este necesar." + }, + "invalidPin": { + "message": "Cod PIN invalid." + }, + "unlockWithWindowsHello": { + "message": "Deblocare cu Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verificați pentru Bitwarden." + }, + "unlockWithTouchId": { + "message": "Deblocare cu Touch ID" + }, + "touchIdConsentMessage": { + "message": "deblocați-vă seiful" + }, + "noAutoPromptWindowsHello": { + "message": "Nu solicitați Windows Hello la pornire." + }, + "noAutoPromptTouchId": { + "message": "Nu solicitați Touch ID la pornire." + }, + "lockWithMasterPassOnRestart": { + "message": "Blocare cu parola principală la repornire" + }, + "preferences": { + "message": "Preferințe" + }, + "enableMenuBar": { + "message": "Activare icon în bara de meniu" + }, + "enableMenuBarDesc": { + "message": "Afișează întotdeauna un icon în bara de meniu." + }, + "hideToMenuBar": { + "message": "Ascunde în bara de meniu" + }, + "selectOneCollection": { + "message": "Trebuie să selectați cel puțin o colecție." + }, + "premiumUpdated": { + "message": "Ați trecut la Premium." + }, + "restore": { + "message": "Restabilire" + }, + "premiumManageAlertAppStore": { + "message": "Vă puteți gestiona abonamentul din App Store. Doriți să vizitați App Store acum?" + }, + "legal": { + "message": "Termeni legali", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Termeni de utilizare" + }, + "privacyPolicy": { + "message": "Politică de confidențialitate" + }, + "unsavedChangesConfirmation": { + "message": "Sigur doriți să renunțați la modificări? Dacă renunțați, informațiile dvs. actuale nu vor fi salvate." + }, + "unsavedChangesTitle": { + "message": "Modificări nesalvate" + }, + "clone": { + "message": "Clonare" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Una sau mai multe politici organizaționale vă afectează setările generatorului." + }, + "vaultTimeoutAction": { + "message": "Acțiune la expirarea seifului" + }, + "vaultTimeoutActionLockDesc": { + "message": "Un seif blocat necesită reintroducerea parolei principale pentru a-l accesa din nou." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Un seif deconectat necesită reintroducerea parolei principale pentru a-l accesa din nou." + }, + "lock": { + "message": "Blocare", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Coș de reciclare", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Căutare în coșul de reciclare" + }, + "permanentlyDeleteItem": { + "message": "Ștergere definitivă a articolului" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Sigur doriți să ștergeți definitiv acest articol?" + }, + "permanentlyDeletedItem": { + "message": "Articolul a fost șters definitiv" + }, + "restoreItem": { + "message": "Restabilire articol" + }, + "restoreItemConfirmation": { + "message": "Sigur doriți să restabiliți acest articol?" + }, + "restoredItem": { + "message": "Articol restabilit" + }, + "permanentlyDelete": { + "message": "Ștergere definitivă" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "După expirare, accesul la seiful dvs. va fi restricționat și va fi necesară autentificarea online. Sigur doriți să utilizați această setare?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Confirmare acțiune la expirare" + }, + "enterpriseSingleSignOn": { + "message": "Conectare unică organizație (SSO)" + }, + "setMasterPassword": { + "message": "Setare parolă principală" + }, + "ssoCompleteRegistration": { + "message": "Pentru a finaliza conectarea cu SSO, vă rugăm să setați o parolă principală pentru a vă accesa și proteja seiful." + }, + "newMasterPass": { + "message": "Parolă principală nouă" + }, + "confirmNewMasterPass": { + "message": "Confirmați noua parolă principală" + }, + "masterPasswordPolicyInEffect": { + "message": "Una sau mai multe politici ale organizației necesită ca parola principală să îndeplinească următoarele cerințe:" + }, + "policyInEffectMinComplexity": { + "message": "Scor minim de complexitate de $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Lungime minimă de $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Unul sau mai multe caractere majuscule" + }, + "policyInEffectLowercase": { + "message": "Unul sau mai multe caractere minuscule" + }, + "policyInEffectNumbers": { + "message": "Una sau mai multe cifre" + }, + "policyInEffectSpecial": { + "message": "Unul sau mai multe din următoarele caractere: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Noua dvs. parolă principală nu îndeplinește cerințele politicii." + }, + "acceptPolicies": { + "message": "Dacă bifați această casetă sunteți de acord cu următoarele:" + }, + "acceptPoliciesError": { + "message": "Termeni de utilizare și Politica de confidențialitate nu au fost recunoscute." + }, + "enableBrowserIntegration": { + "message": "Activați integrarea browserului" + }, + "enableBrowserIntegrationDesc": { + "message": "Integrarea browserului este folosită pentru biometria în browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Integrarea browserului nu este acceptată" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Din păcate, integrarea browserului este acceptată numai în versiunea Mac App Store pentru moment." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Integrarea browserului nu este acceptată" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Din păcate, integrarea browserului nu este acceptată în prezent în versiunea Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Necesită verificare pentru integrarea browserului" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Activează un nivel suplimentar de securitate prin solicitarea validării frazei de amprentă la stabilirea unei legături între desktop și browser. Când este activată, aceasta necesită intervenția utilizatorului și verificarea de fiecare dată când este stabilită o conexiune." + }, + "approve": { + "message": "Aprobați" + }, + "verifyBrowserTitle": { + "message": "Verificați conexiunea browserului" + }, + "verifyBrowserDesc": { + "message": "Vă rugăm să vă asigurați că amprenta afișată este identică cu amprenta indicată în extensia browserului." + }, + "biometricsNotEnabledTitle": { + "message": "Biometria nu a fost activată" + }, + "biometricsNotEnabledDesc": { + "message": "Biometria browserului necesită activarea mai întâi a biometriei de pe desktop în setări." + }, + "personalOwnershipSubmitError": { + "message": "Datorită unei politici pentru întreprinderi, vă este restricționată salvarea de elemente în seiful dvs. personal. Schimbați opțiunea de proprietate la o organizație și alegeți dintre colecțiile disponibile." + }, + "hintEqualsPassword": { + "message": "Indiciul dvs. de parolă nu poate fi același cu parola dvs." + }, + "personalOwnershipPolicyInEffect": { + "message": "O politică de organizație vă afectează opțiunile de proprietate." + }, + "allSends": { + "message": "Toate Send-urile", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fișier" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Căutare Send-uri", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Editare Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Seiful meu" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Data ștergerii" + }, + "deletionDateDesc": { + "message": "Send-ul va fi șters definitiv la data și ora specificate.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Data expirării" + }, + "expirationDateDesc": { + "message": "Dacă este setat, accesul la acest Send va expira la data și ora specificate.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Număr maxim de accesări" + }, + "maxAccessCountDesc": { + "message": "Dacă este configurat, utilizatorii nu vor mai putea accesa acest Send când a fost atins numărul maxim de accesări.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Număr actual de accesări" + }, + "disableSend": { + "message": "Dezactivați acest Send astfel încât nimeni să nu-l poată accesa.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Opțional, este necesară o parolă pentru ca utilizatorii să acceseze acest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Note private despre acest Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Link Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Link Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Când Send-ul este accesat, ascundeți textul în mod implicit", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send creat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send editat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send șters", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Parolă nouă" + }, + "whatTypeOfSend": { + "message": "Ce fel de Send este acesta?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Creare de Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Textul pe care doriți să-l trimiteți." + }, + "sendFileDesc": { + "message": "Fișierul pe care doriți să-l trimiteți." + }, + "days": { + "message": "$DAYS$ zile", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 zi" + }, + "custom": { + "message": "Personalizat" + }, + "deleteSendConfirmation": { + "message": "Sigur doriți să ștergeți acest Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copiați link-ul Send-ului în clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copiați în clipboard linkul pentru partajarea acestui Send după salvare." + }, + "sendDisabled": { + "message": "Send dezactivat", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Datorită unei politici de întreprindere, puteți șterge numai un Send existent.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copiere link" + }, + "disabled": { + "message": "Dezactivat" + }, + "maxAccessCountReached": { + "message": "S-a atins numărul maxim de accesări" + }, + "expired": { + "message": "Expirat" + }, + "pendingDeletion": { + "message": "Ștergere în așteptare" + }, + "webAuthnAuthenticate": { + "message": "Autentificare WebAuthn" + }, + "hideEmail": { + "message": "Ascundeți adresa mea de e-mail de la destinatari." + }, + "sendOptionsPolicyInEffect": { + "message": "Una sau mai multe politici organizaționale vă afectează opțiunile Send-ului." + }, + "emailVerificationRequired": { + "message": "Este necesară verificarea adresei de e-mail" + }, + "emailVerificationRequiredDesc": { + "message": "Trebuie să vă verificați e-mailul pentru a utiliza această caracteristică." + }, + "passwordPrompt": { + "message": "Re-solicitare parolă principală" + }, + "passwordConfirmation": { + "message": "Confirmare parolă principală" + }, + "passwordConfirmationDesc": { + "message": "Această acțiune este protejată. Pentru a continua, vă rugăm să reintroduceți parola principală pentru a vă verifica identitatea." + }, + "updatedMasterPassword": { + "message": "Parolă principală actualizată" + }, + "updateMasterPassword": { + "message": "Actualizare parolă principală" + }, + "updateMasterPasswordWarning": { + "message": "Parola dvs. principală a fost modificată recent de unul din administratorii organizației dvs. Pentru a accesa seiful, trebuie să o actualizați acum. Procedura vă va deconecta de la sesiunea curentă, necesitând să vă reconectați. Sesiunile active de pe alte dispozitive pot continua să rămână active timp de până la o oră." + }, + "hours": { + "message": "Ore" + }, + "minutes": { + "message": "Minute" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Politicile organizației dvs vă afectează expirarea seifului. Timpul maxim permis de expirare a seifului este $HOURS$ oră (ore) și $MINUTES$ minut(e)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Timpul de expirare a seifului depășește restricțiile stabilite de organizația dvs." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Înregistrare automată" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Această organizație are o politică de întreprindere care vă va înregistra automat la resetarea parolei. Înregistrarea va permite administratorilor organizației să vă modifice parola principală." + }, + "vaultExportDisabled": { + "message": "Export de seif dezactivat" + }, + "personalVaultExportPolicyInEffect": { + "message": "Una sau mai multe politici ale organizației vă împiedică să exportați seiful personal." + }, + "addAccount": { + "message": "Adăugare cont" + }, + "removeMasterPassword": { + "message": "Eliminare parolă principală" + }, + "removedMasterPassword": { + "message": "Parolă principală eliminată." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ folosește SSO cu un server de chei auto-găzduit. Membrii acestei organizații nu mai au nevoie de o parolă principală pentru autentificare.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Părăsire organizație" + }, + "leaveOrganizationConfirmation": { + "message": "Sigur doriți să părăsiți această organizație?" + }, + "leftOrganization": { + "message": "Ați părăsit organizația." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nu se poate accesa Conectorul Cheie, vă rugăm să încercați din nou mai târziu." + }, + "lockAllVaults": { + "message": "Blocare toate seifurile" + }, + "accountLimitReached": { + "message": "Nu pot fi conectate mai mult de 5 conturi în același timp." + }, + "accountPreferences": { + "message": "Preferințe" + }, + "appPreferences": { + "message": "Setări aplicație (toate conturile)" + }, + "accountSwitcherLimitReached": { + "message": "Limita contului a fost atinsă. Ieșiți dintr-un cont pentru a adăuga un altul." + }, + "settingsTitle": { + "message": "Setările aplicației pentru $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Schimbați contul" + }, + "options": { + "message": "Opțiuni" + }, + "sessionTimeout": { + "message": "Sesiunea dvs. a expirat. Vă rugăm reveniți și încercați să vă autentificați din nou." + }, + "exportingPersonalVaultTitle": { + "message": "Exportarea seifului personal" + }, + "exportingPersonalVaultDescription": { + "message": "Numai elementele personale din seif asociate cu $EMAIL$ vor fi exportate. Elementele seifului organizației nu vor fi incluse.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "Ce doriți să generați?" + }, + "passwordType": { + "message": "Tip de parolă" + }, + "regenerateUsername": { + "message": "Regenerare nume de utilizator" + }, + "generateUsername": { + "message": "Generare nume de utilizator" + }, + "usernameType": { + "message": "Tip de nume de utilizator" + }, + "plusAddressedEmail": { + "message": "Plus e-mail adresat" + }, + "plusAddressedEmailDesc": { + "message": "Utilizați capacitățile de subadresare ale furnizorului dvs. de e-mail." + }, + "catchallEmail": { + "message": "E-mail Catch-all" + }, + "catchallEmailDesc": { + "message": "Utilizați inbox-ul catch-all configurat pentru domeniul dvs." + }, + "random": { + "message": "Aleatoriu" + }, + "randomWord": { + "message": "Cuvânt aleatoriu" + }, + "websiteName": { + "message": "Numele site-ului web" + }, + "service": { + "message": "Serviciu" + } +} diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json new file mode 100644 index 0000000000..b6b31c2e07 --- /dev/null +++ b/apps/desktop/src/locales/ru/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Фильтры" + }, + "allItems": { + "message": "Все элементы" + }, + "favorites": { + "message": "Избранные" + }, + "types": { + "message": "Типы элементов" + }, + "typeLogin": { + "message": "Логин" + }, + "typeCard": { + "message": "Карта" + }, + "typeIdentity": { + "message": "Личная информация" + }, + "typeSecureNote": { + "message": "Защищенная заметка" + }, + "folders": { + "message": "Папки" + }, + "collections": { + "message": "Коллекции" + }, + "searchVault": { + "message": "Поиск в хранилище" + }, + "addItem": { + "message": "Добавить элемент" + }, + "shared": { + "message": "Общие" + }, + "share": { + "message": "Поделиться" + }, + "moveToOrganization": { + "message": "Переместить в организацию" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ перемещен в $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Выберите организацию, в которую вы хотите переместить этот элемент. При перемещении в организацию право собственности на элемент переходит к этой организации. Вы больше не будете прямым владельцем этого элемента после его перемещения." + }, + "attachments": { + "message": "Вложения" + }, + "viewItem": { + "message": "Просмотр элемента" + }, + "name": { + "message": "Название" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Новый URI" + }, + "username": { + "message": "Имя пользователя" + }, + "password": { + "message": "Пароль" + }, + "passphrase": { + "message": "Парольная фраза" + }, + "editItem": { + "message": "Изменение элемента" + }, + "emailAddress": { + "message": "Адрес email" + }, + "verificationCodeTotp": { + "message": "Код подтверждения (TOTP)" + }, + "website": { + "message": "Веб-сайт" + }, + "notes": { + "message": "Заметки" + }, + "customFields": { + "message": "Пользовательские поля" + }, + "launch": { + "message": "Перейти" + }, + "copyValue": { + "message": "Скопировать значение", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Свернуть после копирования в буфер обмена" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Сворачивать после копирования данных элемента в буфер обмена." + }, + "toggleVisibility": { + "message": "Вкл/выкл видимость" + }, + "toggleCollapse": { + "message": "Свернуть/развернуть", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Имя владельца карты" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Тип карты" + }, + "expiration": { + "message": "Срок действия" + }, + "securityCode": { + "message": "Код безопасности" + }, + "identityName": { + "message": "Имя" + }, + "company": { + "message": "Компания" + }, + "ssn": { + "message": "Номер социального страхования" + }, + "passportNumber": { + "message": "Номер паспорта" + }, + "licenseNumber": { + "message": "ИНН" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адрес" + }, + "premiumRequired": { + "message": "Требуется Премиум" + }, + "premiumRequiredDesc": { + "message": "Для использования этой функции требуется Премиум." + }, + "errorOccurred": { + "message": "Произошла ошибка." + }, + "error": { + "message": "Ошибка" + }, + "january": { + "message": "Январь" + }, + "february": { + "message": "Февраль" + }, + "march": { + "message": "Март" + }, + "april": { + "message": "Апрель" + }, + "may": { + "message": "Май" + }, + "june": { + "message": "Июнь" + }, + "july": { + "message": "Июль" + }, + "august": { + "message": "Август" + }, + "september": { + "message": "Сентябрь" + }, + "october": { + "message": "Октябрь" + }, + "november": { + "message": "Ноябрь" + }, + "december": { + "message": "Декабрь" + }, + "ex": { + "message": "напр.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Обращение" + }, + "mr": { + "message": "Г-н" + }, + "mrs": { + "message": "Г-жа" + }, + "ms": { + "message": "Проф." + }, + "dr": { + "message": "Тов." + }, + "expirationMonth": { + "message": "Месяц" + }, + "expirationYear": { + "message": "Год" + }, + "select": { + "message": "Выбрать" + }, + "other": { + "message": "Прочее" + }, + "generatePassword": { + "message": "Сгенерировать пароль" + }, + "type": { + "message": "Тип" + }, + "firstName": { + "message": "Имя" + }, + "middleName": { + "message": "Отчество" + }, + "lastName": { + "message": "Фамилия" + }, + "fullName": { + "message": "Полное имя" + }, + "address1": { + "message": "Строка адреса 1" + }, + "address2": { + "message": "Строка адреса 2" + }, + "address3": { + "message": "Строка адреса 3" + }, + "cityTown": { + "message": "Город/поселок" + }, + "stateProvince": { + "message": "Регион/область" + }, + "zipPostalCode": { + "message": "Почтовый индекс" + }, + "country": { + "message": "Страна" + }, + "save": { + "message": "Сохранить" + }, + "cancel": { + "message": "Отмена" + }, + "delete": { + "message": "Удалить" + }, + "favorite": { + "message": "Избранный" + }, + "edit": { + "message": "Правка" + }, + "authenticatorKeyTotp": { + "message": "Ключ проверки подлинности (TOTP)" + }, + "folder": { + "message": "Папка" + }, + "newCustomField": { + "message": "Новое пользовательское поле" + }, + "value": { + "message": "Значение" + }, + "dragToSort": { + "message": "Перетащите для сортировки" + }, + "cfTypeText": { + "message": "Текстовое" + }, + "cfTypeHidden": { + "message": "Скрытое" + }, + "cfTypeBoolean": { + "message": "Логическое" + }, + "cfTypeLinked": { + "message": "Связано", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Связанное значение", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Удалить" + }, + "nameRequired": { + "message": "Требуется имя." + }, + "addedItem": { + "message": "Элемент добавлен" + }, + "editedItem": { + "message": "Элемент изменен" + }, + "deleteItem": { + "message": "Удалить элемент" + }, + "deleteFolder": { + "message": "Удалить папку" + }, + "deleteAttachment": { + "message": "Удалить вложение" + }, + "deleteItemConfirmation": { + "message": "Вы действительно хотите отправить в корзину?" + }, + "deletedItem": { + "message": "Элемент отправлен в корзину" + }, + "overwritePasswordConfirmation": { + "message": "Вы уверены, что хотите переписать текущий пароль?" + }, + "overwriteUsername": { + "message": "Перезаписать имя пользователя" + }, + "overwriteUsernameConfirmation": { + "message": "Вы хотите перезаписать текущее имя пользователя?" + }, + "noneFolder": { + "message": "Без папки", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Добавить папку" + }, + "editFolder": { + "message": "Изменить папку" + }, + "regeneratePassword": { + "message": "Создать новый пароль" + }, + "copyPassword": { + "message": "Скопировать пароль" + }, + "copyUri": { + "message": "Скопировать URI" + }, + "copyVerificationCodeTotp": { + "message": "Скопировать код подтверждения (TOTP)" + }, + "length": { + "message": "Длина" + }, + "numWords": { + "message": "Количество слов" + }, + "wordSeparator": { + "message": "Разделитель слов" + }, + "capitalize": { + "message": "С заглавной буквы", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Добавить цифру" + }, + "close": { + "message": "Закрыть" + }, + "minNumbers": { + "message": "Минимум цифр" + }, + "minSpecial": { + "message": "Минимум символов", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Избегать неоднозначных символов" + }, + "searchCollection": { + "message": "Поиск в коллекции" + }, + "searchFolder": { + "message": "Поиск в папке" + }, + "searchFavorites": { + "message": "Поиск в избранном" + }, + "searchType": { + "message": "Поиск по типу", + "description": "Search item type" + }, + "newAttachment": { + "message": "Добавить новое вложение" + }, + "deletedAttachment": { + "message": "Вложение удалено" + }, + "deleteAttachmentConfirmation": { + "message": "Вы действительно хотите удалить это вложение?" + }, + "attachmentSaved": { + "message": "Вложение сохранено." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Выберите файл." + }, + "maxFileSize": { + "message": "Максимальный размер файла 500 МБ." + }, + "updateKey": { + "message": "Вы не можете использовать эту функцию, пока не обновите свой ключ шифрования." + }, + "editedFolder": { + "message": "Папка отредактирована" + }, + "addedFolder": { + "message": "Папка добавлена" + }, + "deleteFolderConfirmation": { + "message": "Вы хотите удалить эту папку?" + }, + "deletedFolder": { + "message": "Папка удалена" + }, + "loginOrCreateNewAccount": { + "message": "Войдите или создайте новый аккаунт для доступа к вашему защищенному хранилищу." + }, + "createAccount": { + "message": "Создать аккаунт" + }, + "logIn": { + "message": "Войти" + }, + "submit": { + "message": "Отправить" + }, + "masterPass": { + "message": "Мастер-пароль" + }, + "masterPassDesc": { + "message": "Мастер-пароль – это ключ к вашему защищенному хранилищу. Он очень важен, поэтому не забывайте его. Восстановить мастер-пароль невозможно." + }, + "masterPassHintDesc": { + "message": "Подсказка к мастер-паролю может помочь вам его вспомнить." + }, + "reTypeMasterPass": { + "message": "Введите мастер-пароль повторно" + }, + "masterPassHint": { + "message": "Подсказка к мастер-паролю (необяз.)" + }, + "settings": { + "message": "Настройки" + }, + "passwordHint": { + "message": "Подсказка к паролю" + }, + "enterEmailToGetHint": { + "message": "Введите email аккаунта для получения подсказки к мастер-паролю." + }, + "getMasterPasswordHint": { + "message": "Получить подсказку к мастер-паролю" + }, + "emailRequired": { + "message": "Необходимо указать email." + }, + "invalidEmail": { + "message": "Неверный адрес email." + }, + "masterPassRequired": { + "message": "Требуется мастер-пароль." + }, + "masterPassLength": { + "message": "Мастер-пароль должен содержать не менее 8 символов." + }, + "masterPassDoesntMatch": { + "message": "Мастер-пароли не совпадают." + }, + "newAccountCreated": { + "message": "Аккаунт создан! Теперь вы можете войти в систему." + }, + "masterPassSent": { + "message": "Мы отправили вам письмо с подсказкой к мастер-паролю." + }, + "unexpectedError": { + "message": "Произошла непредвиденная ошибка." + }, + "itemInformation": { + "message": "Информация об элементе" + }, + "noItemsInList": { + "message": "Нет элементов для отображения." + }, + "sendVerificationCode": { + "message": "Отправить код подтверждения на ваш email" + }, + "sendCode": { + "message": "Отправить код" + }, + "codeSent": { + "message": "Код отправлен" + }, + "verificationCode": { + "message": "Код подтверждения" + }, + "confirmIdentity": { + "message": "Подтвердите вашу личность, чтобы продолжить." + }, + "verificationCodeRequired": { + "message": "Необходим код подтверждения." + }, + "invalidVerificationCode": { + "message": "Неверный код подтверждения" + }, + "continue": { + "message": "Продолжить" + }, + "enterVerificationCodeApp": { + "message": "Введите 6-значный код подтверждения из вашего приложения-аутентификатора." + }, + "enterVerificationCodeEmail": { + "message": "Введите 6-значный код подтверждения, который был отправлен на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Отправлено письмо подтверждения на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Запомнить меня" + }, + "sendVerificationCodeEmailAgain": { + "message": "Отправить код подтверждения еще раз" + }, + "useAnotherTwoStepMethod": { + "message": "Использовать другой метод двухфакторной аутентификации" + }, + "insertYubiKey": { + "message": "Вставьте свой YubiKey в USB-порт компьютера и нажмите его кнопку." + }, + "insertU2f": { + "message": "Вставьте ключ безопасности в USB-порт компьютера. Если у ключа есть кнопка, нажмите ее." + }, + "recoveryCodeDesc": { + "message": "Потеряли доступ ко всем вариантам двухфакторной аутентификации? Используйте код восстановления, чтобы отключить ее для вашего аккаунта." + }, + "recoveryCodeTitle": { + "message": "Код восстановления" + }, + "authenticatorAppTitle": { + "message": "Приложение-аутентификатор" + }, + "authenticatorAppDesc": { + "message": "Используйте приложение-аутентификатор (например Authy или Google Authenticator) для создания кодов проверки на основе времени.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Ключ безопасности YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Используйте YubiKey для доступа к аккаунту. Работает с устройствами YubiKey серий 4, 5 и NEO." + }, + "duoDesc": { + "message": "Подтвердите с помощью Duo Security, используя приложение Duo Mobile, SMS, телефонный звонок или ключ безопасности U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Подтвердите с помощью Duo Security для вашей организации, используя приложение Duo Mobile, SMS, телефонный звонок или ключ безопасности U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Используйте любой ключ безопасности с поддержкой WebAuthn для доступа к своей учетной записи." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Коды подтверждения будут отправлены вам по электронной почте." + }, + "loginUnavailable": { + "message": "Вход недоступен" + }, + "noTwoStepProviders": { + "message": "У этой учетной записи включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим устройством." + }, + "noTwoStepProviders2": { + "message": "Добавьте дополнительные варианты аутентификации, которые поддерживаются большинством устройств (например приложение-аутентификатор)." + }, + "twoStepOptions": { + "message": "Настройки двухфакторной аутентификации" + }, + "selfHostedEnvironment": { + "message": "Среда собственного хостинга" + }, + "selfHostedEnvironmentFooter": { + "message": "Укажите URL-адрес Bitwarden на вашем сервере." + }, + "customEnvironment": { + "message": "Пользовательское окружение" + }, + "customEnvironmentFooter": { + "message": "Для опытных пользователей. Можно указать URL отдельно для каждой службы." + }, + "baseUrl": { + "message": "URL-адрес сервера" + }, + "apiUrl": { + "message": "API URL-адреса сервера" + }, + "webVaultUrl": { + "message": "URL-адрес сервера веб-хранилища" + }, + "identityUrl": { + "message": "URL-адрес сервера идентификации" + }, + "notificationsUrl": { + "message": "URL-адрес сервера уведомлений" + }, + "iconsUrl": { + "message": "URL-адрес сервера значков" + }, + "environmentSaved": { + "message": "URL-адреса среды сохранены." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Нет" + }, + "overwritePassword": { + "message": "Перезаписать пароль" + }, + "learnMore": { + "message": "Подробнее" + }, + "featureUnavailable": { + "message": "Функция недоступна" + }, + "loggedOut": { + "message": "Вы вышли из хранилища" + }, + "loginExpired": { + "message": "Истек срок действия вашей сессии." + }, + "logOutConfirmation": { + "message": "Вы действительно хотите выйти?" + }, + "logOut": { + "message": "Выйти" + }, + "addNewLogin": { + "message": "Добавить новый логин" + }, + "addNewItem": { + "message": "Добавить новый элемент" + }, + "addNewFolder": { + "message": "Добавить новую папку" + }, + "view": { + "message": "Вид" + }, + "account": { + "message": "Аккаунт" + }, + "loading": { + "message": "Загрузка..." + }, + "lockVault": { + "message": "Заблокировать хранилище" + }, + "passwordGenerator": { + "message": "Генератор паролей" + }, + "contactUs": { + "message": "Связаться с нами" + }, + "getHelp": { + "message": "Получить помощь" + }, + "fileBugReport": { + "message": "Сообщить об ошибке" + }, + "blog": { + "message": "Блог" + }, + "followUs": { + "message": "Мы в соцсетях" + }, + "syncVault": { + "message": "Синхронизировать хранилище" + }, + "changeMasterPass": { + "message": "Изменить мастер-пароль" + }, + "changeMasterPasswordConfirmation": { + "message": "Вы можете изменить свой мастер-пароль на bitwarden.com. Перейти на сайт сейчас?" + }, + "fingerprintPhrase": { + "message": "Фраза отпечатка", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Фраза отпечатка вашего аккаунта", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Перейти в веб-хранилище" + }, + "getMobileApp": { + "message": "Мобильное приложение" + }, + "getBrowserExtension": { + "message": "Расширение для браузера" + }, + "syncingComplete": { + "message": "Синхронизация завершена" + }, + "syncingFailed": { + "message": "Ошибка синхронизации" + }, + "yourVaultIsLocked": { + "message": "Ваше xранилище заблокировано. Подтвердите свою личность для продолжения." + }, + "unlock": { + "message": "Разблокировать" + }, + "loggedInAsOn": { + "message": "Выполнен вход на $HOSTNAME$ как $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Неверный мастер-пароль" + }, + "twoStepLoginConfirmation": { + "message": "Двухфакторная аутентификация делает ваш аккаунт более защищенным, требуя подтверждения входа на другом устройстве, например, ключом безопасности, приложением-аутентификатором, SMS, телефонным звонком или письмом. Двухфакторная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?" + }, + "twoStepLogin": { + "message": "Двухфакторная аутентификация" + }, + "vaultTimeout": { + "message": "Тайм-аут хранилища" + }, + "vaultTimeoutDesc": { + "message": "Выберите тайм-аут для хранилища и действие, которое необходимо предпринять." + }, + "immediately": { + "message": "Немедленно" + }, + "tenSeconds": { + "message": "10 секунд" + }, + "twentySeconds": { + "message": "20 секунд" + }, + "thirtySeconds": { + "message": "30 секунд" + }, + "oneMinute": { + "message": "1 минута" + }, + "twoMinutes": { + "message": "2 минуты" + }, + "fiveMinutes": { + "message": "5 минут" + }, + "fifteenMinutes": { + "message": "15 минут" + }, + "thirtyMinutes": { + "message": "30 минут" + }, + "oneHour": { + "message": "1 час" + }, + "fourHours": { + "message": "4 часа" + }, + "onIdle": { + "message": "При бездействии" + }, + "onSleep": { + "message": "В режиме сна" + }, + "onLocked": { + "message": "Вместе с компьютером" + }, + "onRestart": { + "message": "При перезапуске" + }, + "never": { + "message": "Никогда" + }, + "security": { + "message": "Безопасность" + }, + "clearClipboard": { + "message": "Очистка буфера обмена", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Автоматически очищать скопированные значения в вашем буфере обмена.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Отключить значки веб-сайтов" + }, + "disableFaviconDesc": { + "message": "Значки веб-сайтов отображаются рядом с каждым элементом в вашем хранилище." + }, + "enableMinToTray": { + "message": "Сворачивать в область уведомлений" + }, + "enableMinToTrayDesc": { + "message": "При сворачивании окна будет отображаться значок в области уведомлений." + }, + "enableMinToMenuBar": { + "message": "Свернуть в панель меню" + }, + "enableMinToMenuBarDesc": { + "message": "При сворачивании окна будет отображен значок в панели меню." + }, + "enableCloseToTray": { + "message": "Закрывать в область уведомлений" + }, + "enableCloseToTrayDesc": { + "message": "При закрытии окна будет отображаться значок в области уведомлений." + }, + "enableCloseToMenuBar": { + "message": "Закрыть в панель меню" + }, + "enableCloseToMenuBarDesc": { + "message": "При закрытии окна будет отображен значок в панели меню." + }, + "enableTray": { + "message": "Включить значок в области уведомлений" + }, + "enableTrayDesc": { + "message": "Всегда отображать значок в области уведомлений." + }, + "startToTray": { + "message": "Запускать свернутым в область уведомлений" + }, + "startToTrayDesc": { + "message": "При первом запуске приложения будет отображаться только значок в области уведомлений." + }, + "startToMenuBar": { + "message": "Запускать в панели меню" + }, + "startToMenuBarDesc": { + "message": "При первом запуске приложения будет отображаться только значок в панели меню." + }, + "openAtLogin": { + "message": "Запускать автоматически при входе в систему" + }, + "openAtLoginDesc": { + "message": "Автоматически запускать приложение Bitwarden для компьютера при входе в систему." + }, + "alwaysShowDock": { + "message": "Всегда показывать в Dock" + }, + "alwaysShowDockDesc": { + "message": "Показывать значок Bitwarden на панели Dock, даже если он свернут в панель меню." + }, + "confirmTrayTitle": { + "message": "Подтвердить отключение области уведомлений" + }, + "confirmTrayDesc": { + "message": "Отключение этого параметра также отключит все прочие настройки, связанные с областью уведомлений." + }, + "language": { + "message": "Язык" + }, + "languageDesc": { + "message": "Изменение языка приложения. Потребуется перезапуск." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Изменение цветовой темы приложения." + }, + "dark": { + "message": "Темная", + "description": "Dark color" + }, + "light": { + "message": "Светлая", + "description": "Light color" + }, + "copy": { + "message": "Скопировать", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Проверка наличия обновлений" + }, + "version": { + "message": "Версия $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Перезапуск для обновления" + }, + "restartToUpdateDesc": { + "message": "Версия $VERSION_NUM$ готова к установке. Для завершения установки необходимо перезапустить Bitwarden. Сделать это сейчас?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Доступно обновление" + }, + "updateAvailableDesc": { + "message": "Найдено обновление. Загрузить его сейчас?" + }, + "restart": { + "message": "Перезапустить" + }, + "later": { + "message": "Позже" + }, + "noUpdatesAvailable": { + "message": "Обновлений нет. Вы используете последнюю версию." + }, + "updateError": { + "message": "Ошибка обновления" + }, + "unknown": { + "message": "Неизвестно" + }, + "copyUsername": { + "message": "Скопировать имя пользователя" + }, + "copyNumber": { + "message": "Скопировать номер", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Скопировать код безопасности", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Премиум" + }, + "premiumManage": { + "message": "Управление Премиум" + }, + "premiumManageAlert": { + "message": "Вы можете управлять Премиум на bitwarden.com. Перейти на сайт сейчас?" + }, + "premiumRefresh": { + "message": "Обновить Премиум" + }, + "premiumNotCurrentMember": { + "message": "Сейчас у вас отсутствует Премиум." + }, + "premiumSignUpAndGet": { + "message": "Подпишитесь на Премиум и получите:" + }, + "premiumSignUpStorage": { + "message": "1 ГБ зашифрованного хранилища для вложенных файлов." + }, + "premiumSignUpTwoStep": { + "message": "Дополнительные варианты двухфакторной аутентификации, такие как YubiKey, FIDO U2F и Duo." + }, + "premiumSignUpReports": { + "message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища." + }, + "premiumSignUpTotp": { + "message": "TOTP-генератор кодов (2ФА) для логинов в хранилище." + }, + "premiumSignUpSupport": { + "message": "Приоритетная поддержка." + }, + "premiumSignUpFuture": { + "message": "Все будущие функции Премиум. Их будет больше!" + }, + "premiumPurchase": { + "message": "Купить Премиум" + }, + "premiumPurchaseAlert": { + "message": "Вы можете купить Премиум на bitwarden.com. Перейти на сайт сейчас?" + }, + "premiumCurrentMember": { + "message": "У вас есть Премиум!" + }, + "premiumCurrentMemberThanks": { + "message": "Благодарим вас за поддержку Bitwarden." + }, + "premiumPrice": { + "message": "Всего лишь $PRICE$ в год!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Обновление завершено" + }, + "passwordHistory": { + "message": "История паролей" + }, + "clear": { + "message": "Очистить", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Нет паролей для отображения." + }, + "undo": { + "message": "Отменить" + }, + "redo": { + "message": "Вернуть" + }, + "cut": { + "message": "Вырезать", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Вставить", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Выбрать все" + }, + "zoomIn": { + "message": "Увеличить" + }, + "zoomOut": { + "message": "Уменьшить" + }, + "resetZoom": { + "message": "Сбросить масштаб" + }, + "toggleFullScreen": { + "message": "Переключить полноэкранный режим" + }, + "reload": { + "message": "Перезагрузка" + }, + "toggleDevTools": { + "message": "Переключить инструменты разработчика" + }, + "minimize": { + "message": "Свернуть", + "description": "Minimize window" + }, + "zoom": { + "message": "Масштаб" + }, + "bringAllToFront": { + "message": "На передний план", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "О Bitwarden" + }, + "services": { + "message": "Службы" + }, + "hideBitwarden": { + "message": "Скрыть Bitwarden" + }, + "hideOthers": { + "message": "Скрыть другие" + }, + "showAll": { + "message": "Показать все" + }, + "quitBitwarden": { + "message": "Выйти из Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ скопирован(о)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Помощь" + }, + "window": { + "message": "Окно" + }, + "checkPassword": { + "message": "Проверьте, не скомпрометирован ли пароль." + }, + "passwordExposed": { + "message": "Этот пароль был скомпрометирован $VALUE$ раз(а). Вам следует его изменить.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Этот пароль не обнаружен в известных базах утечек. Можно продолжать его использовать." + }, + "baseDomain": { + "message": "Основной домен", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Доменное имя", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Хост", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Точно" + }, + "startsWith": { + "message": "Начинается с" + }, + "regEx": { + "message": "Регулярное выражение", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Обнаружение совпадений", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Метод обнаружения по умолчанию", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Переключить настройки" + }, + "organization": { + "message": "Организация", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "По умолчанию" + }, + "exit": { + "message": "Выйти" + }, + "showHide": { + "message": "Показать/скрыть", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Свернуть в область уведомлений" + }, + "alwaysOnTop": { + "message": "Поверх всех окон", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Обновлено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль обновлен", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Экспорт хранилища" + }, + "fileFormat": { + "message": "Формат файла" + }, + "warning": { + "message": "ВНИМАНИЕ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Подтвердить экспорт хранилища" + }, + "exportWarningDesc": { + "message": "Экспортируемый файл содержит данные вашего хранилища в незашифрованном формате. Его не следует хранить или отправлять по небезопасным каналам (например по электронной почте). Удалите его сразу после использования." + }, + "encExportKeyWarningDesc": { + "message": "При экспорте данные шифруются при помощи ключа шифрования учетной записи. Если вы решите сменить ключ шифрования, вам следует экспортировать данные повторно, поскольку вы не сможете расшифровать этот файл экспорта." + }, + "encExportAccountWarningDesc": { + "message": "Ключи шифрования уникальны для каждой учетной записи Bitwarden, поэтому нельзя импортировать зашифрованное хранилище в другой аккаунт." + }, + "noOrganizationsList": { + "message": "Вы не являетесь членом какой-либо организации. Организации позволяют безопасно обмениваться элементами с другими пользователями." + }, + "noCollectionsInList": { + "message": "Нет коллекций для отображения." + }, + "ownership": { + "message": "Владелец" + }, + "whoOwnsThisItem": { + "message": "Кому принадлежит этот элемент?" + }, + "strong": { + "message": "Сильный", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Хороший", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Слабый", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слабый мастер-пароль" + }, + "weakMasterPasswordDesc": { + "message": "Вы выбрали слабый мастер-пароль. Для надежной защиты аккаунта Bitwarden следует использовать сильный мастер-пароль (или парольную фразу). Вы действительно хотите использовать этот мастер-пароль?" + }, + "pin": { + "message": "PIN-код", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Разблокировка PIN-кодом" + }, + "setYourPinCode": { + "message": "Установите PIN-код для разблокировки Bitwarden. Настройки PIN-кода будут сброшены, если вы когда-либо полностью выйдете из приложения." + }, + "pinRequired": { + "message": "Требуется PIN-код." + }, + "invalidPin": { + "message": "Неверный PIN-код." + }, + "unlockWithWindowsHello": { + "message": "Разблокировать с Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Верификация для Bitwarden." + }, + "unlockWithTouchId": { + "message": "Разблокировать с Touch ID" + }, + "touchIdConsentMessage": { + "message": "разблокировать ваше хранилище" + }, + "noAutoPromptWindowsHello": { + "message": "Не запрашивать Windows Hello при запуске." + }, + "noAutoPromptTouchId": { + "message": "Не запрашивать Touch ID при запуске." + }, + "lockWithMasterPassOnRestart": { + "message": "Блокировать мастер-паролем при перезапуске" + }, + "preferences": { + "message": "Настройки" + }, + "enableMenuBar": { + "message": "Включить значок в строке меню" + }, + "enableMenuBarDesc": { + "message": "Всегда показывать значок в строке меню." + }, + "hideToMenuBar": { + "message": "Скрыть в строке меню" + }, + "selectOneCollection": { + "message": "Необходимо выбрать хотя бы одну коллекцию." + }, + "premiumUpdated": { + "message": "Вы обновились до Премиум." + }, + "restore": { + "message": "Восстановить" + }, + "premiumManageAlertAppStore": { + "message": "Вы можете управлять своей подпиской из App Store. Открыть App Store?" + }, + "legal": { + "message": "Правовая информация", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Условия использования" + }, + "privacyPolicy": { + "message": "Политика конфиденциальности" + }, + "unsavedChangesConfirmation": { + "message": "Вы действительно хотите выйти? Ваша текущая информация не будет сохранена." + }, + "unsavedChangesTitle": { + "message": "Несохраненные изменения" + }, + "clone": { + "message": "Клонировать" + }, + "passwordGeneratorPolicyInEffect": { + "message": "На настройки генератора влияют одна или несколько политик организации." + }, + "vaultTimeoutAction": { + "message": "Действие по тайм-ауту хранилища" + }, + "vaultTimeoutActionLockDesc": { + "message": "Заблокированное хранилище потребует повторного ввода мастер-пароля для получения доступа к нему." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Выход из хранилища потребует повторную аутентификацию для получения доступа к нему." + }, + "lock": { + "message": "Заблокировать", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Корзина", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Поиск в корзине" + }, + "permanentlyDeleteItem": { + "message": "Окончательно удалить элемент" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Вы уверены, что хотите окончательно удалить этот элемент?" + }, + "permanentlyDeletedItem": { + "message": "Элемент удален навсегда" + }, + "restoreItem": { + "message": "Восстановить элемент" + }, + "restoreItemConfirmation": { + "message": "Вы уверены, что хотите восстановить этот элемент?" + }, + "restoredItem": { + "message": "Элемент восстановлен" + }, + "permanentlyDelete": { + "message": "Удалить окончательно" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "По истечении тайм-аута будет выполнен выход, что приведет к отмене всех прав доступа к вашему хранилищу и потребует онлайн-аутентификации. Вы уверены, что хотите использовать этот параметр?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Подтверждение действия по тайм-ауту" + }, + "enterpriseSingleSignOn": { + "message": "Единая корпоративная авторизация (SSO)" + }, + "setMasterPassword": { + "message": "Задать мастер-пароль" + }, + "ssoCompleteRegistration": { + "message": "Для завершения процесса авторизации при помощи SSO, установите мастер-пароль для доступа к вашему хранилищу и его защиты." + }, + "newMasterPass": { + "message": "Новый мастер-пароль" + }, + "confirmNewMasterPass": { + "message": "Подтвердите новый мастер-пароль" + }, + "masterPasswordPolicyInEffect": { + "message": "Согласно одной или нескольким политикам организации необходимо, чтобы ваш мастер-пароль отвечал следующим требованиям:" + }, + "policyInEffectMinComplexity": { + "message": "Минимальный уровень сложности $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Минимальная длина $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Содержать хотя бы одну заглавную букву" + }, + "policyInEffectLowercase": { + "message": "Содержать хотя бы одну строчную букву" + }, + "policyInEffectNumbers": { + "message": "Содержать хотя бы одну цифру" + }, + "policyInEffectSpecial": { + "message": "Содержать хотя бы один из следующих специальных символов $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Ваш новый мастер-пароль не соответствует требованиям политики." + }, + "acceptPolicies": { + "message": "Отметив этот флажок, вы соглашаетесь со следующим:" + }, + "acceptPoliciesError": { + "message": "Условия предоставления услуг и Политика конфиденциальности не были подтверждены." + }, + "enableBrowserIntegration": { + "message": "Включить интеграцию с браузером" + }, + "enableBrowserIntegrationDesc": { + "message": "Интеграция с браузером используется для биометрии в браузере." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Интеграция с браузером не поддерживается" + }, + "browserIntegrationMasOnlyDesc": { + "message": "К сожалению, интеграция браузера пока поддерживается только в версии Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Интеграция с браузером не поддерживается" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "К сожалению, интеграция с браузером на текущий момент не поддерживается в версии из магазина Windows." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Требовать верификацию для интеграции с браузером" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Включите дополнительный уровень безопасности, используя проверку отпечатка фразы при установлении соединения между компьютером и браузером. Когда эта функция включена, она требует участия пользователя и верификации каждый раз при установлении соединения." + }, + "approve": { + "message": "Принять" + }, + "verifyBrowserTitle": { + "message": "Верификация соединения с браузером" + }, + "verifyBrowserDesc": { + "message": "Пожалуйста, убедитесь, что отображаемый отпечаток идентичен отпечатку, отображаемому в расширении браузера." + }, + "biometricsNotEnabledTitle": { + "message": "Биометрия не включена" + }, + "biometricsNotEnabledDesc": { + "message": "Для активации биометрии в браузере сначала необходимо включить биометрию в приложении для компьютера." + }, + "personalOwnershipSubmitError": { + "message": "В соответствии с корпоративной политикой вам запрещено сохранять элементы в личном хранилище. Измените владельца на организацию и выберите из доступных Коллекций." + }, + "hintEqualsPassword": { + "message": "Подсказка для пароля не может совпадать с паролем." + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика организации влияет на ваши варианты владения." + }, + "allSends": { + "message": "Все Send’ы", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Текст" + }, + "searchSends": { + "message": "Поиск Send’ов", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Изменить Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Хранилище" + }, + "text": { + "message": "Текст" + }, + "deletionDate": { + "message": "Срок удаления" + }, + "deletionDateDesc": { + "message": "Эта Send будет окончательно удалена в указанные дату и время.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Срок истечения" + }, + "expirationDateDesc": { + "message": "Если задано, доступ к этой Send истечет в указанные дату и время.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Максимум обращений" + }, + "maxAccessCountDesc": { + "message": "Если задано, пользователи больше не смогут получить доступ к этой Send, как только будет достигнуто максимальное количество обращений.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Текущих обращений" + }, + "disableSend": { + "message": "Отключить эту Send, чтобы никто не мог получить к ней доступ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "По возможности запрашивать у пользователей пароль для доступа к этой Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Личные заметки об этой Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Ссылка на Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Ссылка на Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "При доступе к Send скрывать текст по умолчанию", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Созданная Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Измененная Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Удаленная Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Новый пароль" + }, + "whatTypeOfSend": { + "message": "Выберите тип Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Создать Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст, который вы хотите отправить." + }, + "sendFileDesc": { + "message": "Файл, который вы хотите отправить." + }, + "days": { + "message": "$DAYS$ дн.", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 день" + }, + "custom": { + "message": "Пользовательский" + }, + "deleteSendConfirmation": { + "message": "Вы действительно хотите удалить эту Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Скопировать ссылку на Send в буфер обмена", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Скопировать ссылку в буфер обмена после сохранения, чтобы поделиться этой Send." + }, + "sendDisabled": { + "message": "Send отключена", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "В соответствии с корпоративной политикой вы можете удалить только существующую Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Скопировать ссылку" + }, + "disabled": { + "message": "Отключено" + }, + "maxAccessCountReached": { + "message": "Достигнут максимум обращений" + }, + "expired": { + "message": "Срок истек" + }, + "pendingDeletion": { + "message": "Ожидание удаления" + }, + "webAuthnAuthenticate": { + "message": "Аутентификация WebAutn" + }, + "hideEmail": { + "message": "Скрыть мой адрес email от получателей." + }, + "sendOptionsPolicyInEffect": { + "message": "На параметры Send влияют одна или несколько политик организации." + }, + "emailVerificationRequired": { + "message": "Требуется подтверждение электронной почты" + }, + "emailVerificationRequiredDesc": { + "message": "Для использования этой функции необходимо подтвердить свою электронную почту." + }, + "passwordPrompt": { + "message": "Повторный запрос мастер-пароля" + }, + "passwordConfirmation": { + "message": "Подтверждение мастер-пароля" + }, + "passwordConfirmationDesc": { + "message": "Это действие защищено. Для продолжения введите свой мастер-пароль, чтобы подтвердить свою личность." + }, + "updatedMasterPassword": { + "message": "Мастер-пароль обновлен" + }, + "updateMasterPassword": { + "message": "Обновить мастер-пароль" + }, + "updateMasterPasswordWarning": { + "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Активные сессии на других устройствах могут оставаться активными в течение одного часа." + }, + "hours": { + "message": "Час." + }, + "minutes": { + "message": "Мин." + }, + "vaultTimeoutPolicyInEffect": { + "message": "Политики вашей организации влияют на тайм-аут хранилища. Максимально допустимый тайм-аут хранилища составляет $HOURS$ час. и $MINUTES$ мин.", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Тайм-аут вашего хранилища превышает ограничения, установленные вашей организацией." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматическая регистрация" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "В этой организации действует корпоративная политика, которая автоматически зарегистрирует вас на сброс пароля. Регистрация позволит администраторам организации изменить ваш мастер-пароль." + }, + "vaultExportDisabled": { + "message": "Экспорт хранилища отключен" + }, + "personalVaultExportPolicyInEffect": { + "message": "Экспорт вашего личного хранилища запрещен одной или несколькими политиками организации." + }, + "addAccount": { + "message": "Добавить аккаунт" + }, + "removeMasterPassword": { + "message": "Удалить мастер-пароль" + }, + "removedMasterPassword": { + "message": "Мастер-пароль удален." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ использует SSO с собственным сервером ключей. Для авторизации членам этой организации больше не требуется мастер-пароль.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Покинуть организацию" + }, + "leaveOrganizationConfirmation": { + "message": "Вы действительно хотите покинуть эту организацию?" + }, + "leftOrganization": { + "message": "Вы покинули организацию." + }, + "ssoKeyConnectorUnavailable": { + "message": "Не удается подключиться к соединителю ключей, повторите попытку позже." + }, + "lockAllVaults": { + "message": "Заблокировать все хранилища" + }, + "accountLimitReached": { + "message": "Одновременно могут быть авторизованы не более 5 аккаунтов." + }, + "accountPreferences": { + "message": "Настройки" + }, + "appPreferences": { + "message": "Настройки приложения (все аккаунты)" + }, + "accountSwitcherLimitReached": { + "message": "Достигнут лимит учетной записи. Выйдите, чтобы добавить другую." + }, + "settingsTitle": { + "message": "Настройки приложения для $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Сменить аккаунт" + }, + "options": { + "message": "Опции" + }, + "sessionTimeout": { + "message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова." + }, + "exportingPersonalVaultTitle": { + "message": "Экспорт личного хранилища" + }, + "exportingPersonalVaultDescription": { + "message": "Будут экспортированы только личные элементы хранилища, связанные с $EMAIL$. Элементы хранилища организации включены не будут.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Что вы хотите сгенерировать?" + }, + "passwordType": { + "message": "Тип пароля" + }, + "regenerateUsername": { + "message": "Пересоздать имя пользователя" + }, + "generateUsername": { + "message": "Создать имя пользователя" + }, + "usernameType": { + "message": "Тип имени пользователя" + }, + "plusAddressedEmail": { + "message": "Плюс-адресованные email" + }, + "plusAddressedEmailDesc": { + "message": "Использовать возможности суб-адресации вашего провайдера электронной почты." + }, + "catchallEmail": { + "message": "Catch-all-адрес электронной почты" + }, + "catchallEmailDesc": { + "message": "Использовать настроенную в вашем домене почту catch-all." + }, + "random": { + "message": "Случайно" + }, + "randomWord": { + "message": "Случайное слово" + }, + "websiteName": { + "message": "Название сайта" + }, + "service": { + "message": "Служба" + } +} diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json new file mode 100644 index 0000000000..6a6052b750 --- /dev/null +++ b/apps/desktop/src/locales/si/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "බිට්වාඩන්" + }, + "filters": { + "message": "පෙරහන්" + }, + "allItems": { + "message": "All Items" + }, + "favorites": { + "message": "ප්‍රියතමයන්" + }, + "types": { + "message": "වර්ග" + }, + "typeLogin": { + "message": "පිවිසෙන්න" + }, + "typeCard": { + "message": "පත" + }, + "typeIdentity": { + "message": "අනන්‍යතාව" + }, + "typeSecureNote": { + "message": "ආරක්ෂිත සටහන" + }, + "folders": { + "message": "බහාලුම්" + }, + "collections": { + "message": "Collections" + }, + "searchVault": { + "message": "Search Vault" + }, + "addItem": { + "message": "Add Item" + }, + "shared": { + "message": "Shared" + }, + "share": { + "message": "බෙදාගන්න" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "View Item" + }, + "name": { + "message": "නම" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "පරිශීලක නාමය" + }, + "password": { + "message": "මුර පදය" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "Edit Item" + }, + "emailAddress": { + "message": "වි-තැපැල් ලිපිනය" + }, + "verificationCodeTotp": { + "message": "Verification Code (TOTP)" + }, + "website": { + "message": "වියමන අඩවිය" + }, + "notes": { + "message": "සටහන්" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "දියත් කරන්න" + }, + "copyValue": { + "message": "අගය පිටපත් කරන්න", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "අංකය" + }, + "brand": { + "message": "Brand" + }, + "expiration": { + "message": "කල් ඉකුත් වීම" + }, + "securityCode": { + "message": "ආරක්ෂිත කේතය" + }, + "identityName": { + "message": "Identity Name" + }, + "company": { + "message": "සමාගම" + }, + "ssn": { + "message": "Social Security Number" + }, + "passportNumber": { + "message": "Passport Number" + }, + "licenseNumber": { + "message": "License Number" + }, + "email": { + "message": "වි-තැපෑල" + }, + "phone": { + "message": "දුරකථනය" + }, + "address": { + "message": "ලිපිනය" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "A premium membership is required to use this feature." + }, + "errorOccurred": { + "message": "An error has occurred." + }, + "error": { + "message": "දෝෂය" + }, + "january": { + "message": "දුරුතු" + }, + "february": { + "message": "නවම්" + }, + "march": { + "message": "මැදින්" + }, + "april": { + "message": "බක්" + }, + "may": { + "message": "වෙසක්" + }, + "june": { + "message": "පොසොන්" + }, + "july": { + "message": "ඇසළ" + }, + "august": { + "message": "නිකිණි" + }, + "september": { + "message": "බිනර" + }, + "october": { + "message": "වප්" + }, + "november": { + "message": "ඉල්" + }, + "december": { + "message": "උඳුවප්" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Title" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Expiration Month" + }, + "expirationYear": { + "message": "Expiration Year" + }, + "select": { + "message": "Select" + }, + "other": { + "message": "Other" + }, + "generatePassword": { + "message": "Generate Password" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "First Name" + }, + "middleName": { + "message": "Middle Name" + }, + "lastName": { + "message": "Last Name" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Address 1" + }, + "address2": { + "message": "Address 2" + }, + "address3": { + "message": "Address 3" + }, + "cityTown": { + "message": "City / Town" + }, + "stateProvince": { + "message": "State / Province" + }, + "zipPostalCode": { + "message": "Zip / Postal Code" + }, + "country": { + "message": "රට" + }, + "save": { + "message": "සුරකින්න" + }, + "cancel": { + "message": "අවලංගු කරන්න" + }, + "delete": { + "message": "Delete" + }, + "favorite": { + "message": "ප්‍රියතමය" + }, + "edit": { + "message": "සංස්කරණය" + }, + "authenticatorKeyTotp": { + "message": "Authenticator Key (TOTP)" + }, + "folder": { + "message": "බහාලුම" + }, + "newCustomField": { + "message": "New Custom Field" + }, + "value": { + "message": "අගය" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Hidden" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "ඉවත් කරන්න" + }, + "nameRequired": { + "message": "Name is required." + }, + "addedItem": { + "message": "Added item" + }, + "editedItem": { + "message": "Edited item" + }, + "deleteItem": { + "message": "Delete Item" + }, + "deleteFolder": { + "message": "Delete Folder" + }, + "deleteAttachment": { + "message": "Delete Attachment" + }, + "deleteItemConfirmation": { + "message": "Do you really want to send to the trash?" + }, + "deletedItem": { + "message": "Sent item to trash" + }, + "overwritePasswordConfirmation": { + "message": "Are you sure you want to overwrite the current password?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "බහාලුමක් නැත", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "බහාලුම එකතු කරන්න" + }, + "editFolder": { + "message": "බහාලුම සංස්කරණය කරන්න" + }, + "regeneratePassword": { + "message": "Regenerate Password" + }, + "copyPassword": { + "message": "මුරපදය පිටපත් කරන්න" + }, + "copyUri": { + "message": "Copy URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "Length" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "වසන්න" + }, + "minNumbers": { + "message": "Minimum Numbers" + }, + "minSpecial": { + "message": "Minimum Special", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Avoid Ambiguous Characters" + }, + "searchCollection": { + "message": "Search Collection" + }, + "searchFolder": { + "message": "බහාලුම සොයන්න" + }, + "searchFavorites": { + "message": "ප්‍රියතමයන් සොයන්න" + }, + "searchType": { + "message": "Search Type", + "description": "Search item type" + }, + "newAttachment": { + "message": "Add New Attachment" + }, + "deletedAttachment": { + "message": "Deleted attachment" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "Select a file." + }, + "maxFileSize": { + "message": "Maximum file size is 500 MB." + }, + "updateKey": { + "message": "You cannot use this feature until you update your encryption key." + }, + "editedFolder": { + "message": "Edited folder" + }, + "addedFolder": { + "message": "Added folder" + }, + "deleteFolderConfirmation": { + "message": "Are you sure you want to delete this folder?" + }, + "deletedFolder": { + "message": "Deleted folder" + }, + "loginOrCreateNewAccount": { + "message": "Log in or create a new account to access your secure vault." + }, + "createAccount": { + "message": "Create Account" + }, + "logIn": { + "message": "Log In" + }, + "submit": { + "message": "Submit" + }, + "masterPass": { + "message": "Master Password" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "සැකසුම්" + }, + "passwordHint": { + "message": "Password Hint" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "වලංගු නොවන වි-තැපැල් ලිපිනයකි." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Item Information" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Verification Code" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "ඉදිරියට" + }, + "enterVerificationCodeApp": { + "message": "Enter the 6 digit verification code from your authenticator app." + }, + "enterVerificationCodeEmail": { + "message": "Enter the 6 digit verification code that was emailed to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Remember me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Send verification code email again" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "ප්‍රතිසාධන කේතය" + }, + "authenticatorAppTitle": { + "message": "Authenticator App" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "වි-තැපෑල" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "Login Unavailable" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "හරි" + }, + "yes": { + "message": "ඔව්" + }, + "no": { + "message": "නැහැ" + }, + "overwritePassword": { + "message": "Overwrite Password" + }, + "learnMore": { + "message": "Learn more" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "නික්මෙන්න" + }, + "addNewLogin": { + "message": "Add New Login" + }, + "addNewItem": { + "message": "Add New Item" + }, + "addNewFolder": { + "message": "නව බහාලුමක් එකතු කරන්න" + }, + "view": { + "message": "View" + }, + "account": { + "message": "ගිණුම" + }, + "loading": { + "message": "පූරණය වෙමින්..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Password Generator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "Change Master Password" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "Get Mobile App" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "අනවහිර" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "Two-step Login" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Immediately" + }, + "tenSeconds": { + "message": "තත්පර 10" + }, + "twentySeconds": { + "message": "තත්පර 20" + }, + "thirtySeconds": { + "message": "තත්පර 30" + }, + "oneMinute": { + "message": "විනාඩි 1" + }, + "twoMinutes": { + "message": "විනාඩි 2" + }, + "fiveMinutes": { + "message": "විනාඩි 5" + }, + "fifteenMinutes": { + "message": "විනාඩි 15" + }, + "thirtyMinutes": { + "message": "30 minutes" + }, + "oneHour": { + "message": "1 hour" + }, + "fourHours": { + "message": "4 hours" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "භාෂාව" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "තේමාව" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "පිටපත්", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Check For Updates" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Restart" + }, + "later": { + "message": "පසුව" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Update Error" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "Copy Username" + }, + "copyNumber": { + "message": "Copy Number", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Copy Security Code", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "Password History" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Cut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Paste", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Select All" + }, + "zoomIn": { + "message": "Zoom In" + }, + "zoomOut": { + "message": "Zoom Out" + }, + "resetZoom": { + "message": "Reset Zoom" + }, + "toggleFullScreen": { + "message": "Toggle Full Screen" + }, + "reload": { + "message": "Reload" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimize", + "description": "Minimize window" + }, + "zoom": { + "message": "Zoom" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Show All" + }, + "quitBitwarden": { + "message": "Quit Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Help" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json new file mode 100644 index 0000000000..e36cea0a5c --- /dev/null +++ b/apps/desktop/src/locales/sk/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtre" + }, + "allItems": { + "message": "Všetky položky" + }, + "favorites": { + "message": "Obľúbené" + }, + "types": { + "message": "Typy" + }, + "typeLogin": { + "message": "Prihlásenie" + }, + "typeCard": { + "message": "Karta" + }, + "typeIdentity": { + "message": "Identita" + }, + "typeSecureNote": { + "message": "Zabezpečená poznámka" + }, + "folders": { + "message": "Priečinky" + }, + "collections": { + "message": "Zbierky" + }, + "searchVault": { + "message": "Hľadať v trezore" + }, + "addItem": { + "message": "Pridať položku" + }, + "shared": { + "message": "Zdieľané" + }, + "share": { + "message": "Zdieľať" + }, + "moveToOrganization": { + "message": "Presunúť do Organizácie" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ presunuté do $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Vyberte organizáciu, do ktorej chcete presunúť túto položku. Presunom do organizácie sa vlastníctvo položky prenáša na túto organizáciu. Po presunutí už nebudete priamym vlastníkom danej položky." + }, + "attachments": { + "message": "Prílohy" + }, + "viewItem": { + "message": "Zobraziť položku" + }, + "name": { + "message": "Názov" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nové URI" + }, + "username": { + "message": "Používateľské meno" + }, + "password": { + "message": "Heslo" + }, + "passphrase": { + "message": "Heslo" + }, + "editItem": { + "message": "Upraviť položku" + }, + "emailAddress": { + "message": "Emailová adresa" + }, + "verificationCodeTotp": { + "message": "Overovací kód (TOTP)" + }, + "website": { + "message": "Webstránka" + }, + "notes": { + "message": "Poznámky" + }, + "customFields": { + "message": "Vlastné polia" + }, + "launch": { + "message": "Spustiť" + }, + "copyValue": { + "message": "Skopírovať hodnotu", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimalizovať pri kopírovaní do schránky" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimalizovať pri kopírovaní údajov z položky do schránky." + }, + "toggleVisibility": { + "message": "Prepnúť viditeľnosť" + }, + "toggleCollapse": { + "message": "Prepnúť zloženie", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Meno vlastníka karty" + }, + "number": { + "message": "Číslo" + }, + "brand": { + "message": "Značka" + }, + "expiration": { + "message": "Exspirácia" + }, + "securityCode": { + "message": "Bezpečnostný kód" + }, + "identityName": { + "message": "Názov identity" + }, + "company": { + "message": "Spoločnosť" + }, + "ssn": { + "message": "Číslo poistenca sociálnej poisťovne" + }, + "passportNumber": { + "message": "Číslo pasu" + }, + "licenseNumber": { + "message": "Číslo vodičského preukazu" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Telefón" + }, + "address": { + "message": "Adresa" + }, + "premiumRequired": { + "message": "Vyžaduje prémiový účet" + }, + "premiumRequiredDesc": { + "message": "Pre použitie tejto funkcie je potrebné prémiové členstvo." + }, + "errorOccurred": { + "message": "Vyskytla sa chyba." + }, + "error": { + "message": "Chyba" + }, + "january": { + "message": "Január" + }, + "february": { + "message": "Február" + }, + "march": { + "message": "Marec" + }, + "april": { + "message": "Apríl" + }, + "may": { + "message": "Máj" + }, + "june": { + "message": "Jún" + }, + "july": { + "message": "Júl" + }, + "august": { + "message": "August" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Október" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "napr.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Oslovenie" + }, + "mr": { + "message": "Pán" + }, + "mrs": { + "message": "Pani" + }, + "ms": { + "message": "Slečna" + }, + "dr": { + "message": "Dr." + }, + "expirationMonth": { + "message": "Mesiac exspirácie" + }, + "expirationYear": { + "message": "Rok exspirácie" + }, + "select": { + "message": "Vybrať" + }, + "other": { + "message": "Ostatné" + }, + "generatePassword": { + "message": "Generovať heslo" + }, + "type": { + "message": "Typ" + }, + "firstName": { + "message": "Krstné meno" + }, + "middleName": { + "message": "Druhé meno" + }, + "lastName": { + "message": "Priezvisko" + }, + "fullName": { + "message": "Celé meno" + }, + "address1": { + "message": "Adresa 1" + }, + "address2": { + "message": "Adresa 2" + }, + "address3": { + "message": "Adresa 3" + }, + "cityTown": { + "message": "Mesto" + }, + "stateProvince": { + "message": "Región" + }, + "zipPostalCode": { + "message": "PSČ" + }, + "country": { + "message": "Krajina" + }, + "save": { + "message": "Uložiť" + }, + "cancel": { + "message": "Zrušiť" + }, + "delete": { + "message": "Odstrániť" + }, + "favorite": { + "message": "Obľúbené" + }, + "edit": { + "message": "Upraviť" + }, + "authenticatorKeyTotp": { + "message": "Kľúč overovateľa (TOTP)" + }, + "folder": { + "message": "Priečinok" + }, + "newCustomField": { + "message": "Nové vlastné pole" + }, + "value": { + "message": "Hodnota" + }, + "dragToSort": { + "message": "Zoradiť presúvaním" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Skryté" + }, + "cfTypeBoolean": { + "message": "Áno/Nie" + }, + "cfTypeLinked": { + "message": "Prepojené", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Prepojená hodnota", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Odstrániť" + }, + "nameRequired": { + "message": "Meno je povinné." + }, + "addedItem": { + "message": "Položka pridaná" + }, + "editedItem": { + "message": "Položka upravená" + }, + "deleteItem": { + "message": "Odstrániť položku" + }, + "deleteFolder": { + "message": "Odstrániť priečinok" + }, + "deleteAttachment": { + "message": "Odstrániť prílohu" + }, + "deleteItemConfirmation": { + "message": "Naozaj chcete odstrániť túto položku?" + }, + "deletedItem": { + "message": "Položka odstránená" + }, + "overwritePasswordConfirmation": { + "message": "Naozaj chcete prepísať aktuálne heslo?" + }, + "overwriteUsername": { + "message": "Prepísať používateľské meno" + }, + "overwriteUsernameConfirmation": { + "message": "Naozaj chcete prepísať aktuálne používateľské meno?" + }, + "noneFolder": { + "message": "Žiadny priečinok", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Pridať priečinok" + }, + "editFolder": { + "message": "Upraviť priečinok" + }, + "regeneratePassword": { + "message": "Vygenerovať nové heslo" + }, + "copyPassword": { + "message": "Kopírovať heslo" + }, + "copyUri": { + "message": "Kopírovať URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopírovať overovací kód (TOTP)" + }, + "length": { + "message": "Dĺžka" + }, + "numWords": { + "message": "Počet slov" + }, + "wordSeparator": { + "message": "Oddeľovač slov" + }, + "capitalize": { + "message": "Veľké prvé písmená slov", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Zahrnúť číslo" + }, + "close": { + "message": "Zavrieť" + }, + "minNumbers": { + "message": "Minimálny počet číslic" + }, + "minSpecial": { + "message": "Minimum špeciálnych", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Vyhnúť sa zameniteľným znakom" + }, + "searchCollection": { + "message": "Hľadať v zbierke" + }, + "searchFolder": { + "message": "Hľadať v priečinku" + }, + "searchFavorites": { + "message": "Hľadať v obľúbených" + }, + "searchType": { + "message": "Hľadať podľa typu", + "description": "Search item type" + }, + "newAttachment": { + "message": "Pridať novú prílohu" + }, + "deletedAttachment": { + "message": "Príloha odstránená" + }, + "deleteAttachmentConfirmation": { + "message": "Naozaj chcete odstrániť prílohu?" + }, + "attachmentSaved": { + "message": "Príloha bola uložená." + }, + "file": { + "message": "Súbor" + }, + "selectFile": { + "message": "Vybrať súbor." + }, + "maxFileSize": { + "message": "Maximálna veľkosť súboru je 500 MB." + }, + "updateKey": { + "message": "Túto funkciu je možné použiť, až keď si aktualizujete svoj šifrovací kľúč." + }, + "editedFolder": { + "message": "Priečinok upravený" + }, + "addedFolder": { + "message": "Priečinok pridaný" + }, + "deleteFolderConfirmation": { + "message": "Naozaj chcete odstrániť tento priečinok?" + }, + "deletedFolder": { + "message": "Priečinok odstránený" + }, + "loginOrCreateNewAccount": { + "message": "Prihláste sa alebo si vytvorte nový účet, aby ste mohli pristupovať k vášmu bezpečnému trezoru." + }, + "createAccount": { + "message": "Vytvoriť účet" + }, + "logIn": { + "message": "Prihlásiť sa" + }, + "submit": { + "message": "Potvrdiť" + }, + "masterPass": { + "message": "Hlavné heslo" + }, + "masterPassDesc": { + "message": "Hlavné heslo je heslo, ktoré používate na prístup k svojmu trezoru. Je veľmi dôležité, aby ste svoje hlavné heslo nezabudli. Neexistuje možnosť ako heslo obnoviť v prípade, že ho zabudnete." + }, + "masterPassHintDesc": { + "message": "Nápoveď k hlavnému heslu vám môže pomôcť spomenúť si na heslo, ak ho zabudnete." + }, + "reTypeMasterPass": { + "message": "Znovu zadajte hlavné heslo" + }, + "masterPassHint": { + "message": "Nápoveď k hlavnému heslo (voliteľné)" + }, + "settings": { + "message": "Nastavenia" + }, + "passwordHint": { + "message": "Nápoveď k heslu" + }, + "enterEmailToGetHint": { + "message": "Zadajte emailovú adresu na zaslanie nápovede pre vaše hlavné heslo." + }, + "getMasterPasswordHint": { + "message": "Získať nápoveď k hlavnému heslu" + }, + "emailRequired": { + "message": "Emailová adresa je povinná." + }, + "invalidEmail": { + "message": "Neplatná emailová adresa." + }, + "masterPassRequired": { + "message": "Hlavné heslo je povinné." + }, + "masterPassLength": { + "message": "Hlavné heslo musí obsahovať aspoň 8 znakov." + }, + "masterPassDoesntMatch": { + "message": "Potvrdenie hlavného hesla sa nezhoduje." + }, + "newAccountCreated": { + "message": "Váš nový účet bol vytvorený! Teraz sa môžete prihlásiť." + }, + "masterPassSent": { + "message": "Emailom sme vám poslali nápoveď k hlavnému heslu." + }, + "unexpectedError": { + "message": "Vyskytla sa neočakávaná chyba." + }, + "itemInformation": { + "message": "Informácie o položke" + }, + "noItemsInList": { + "message": "Neexistujú žiadne položky na zobrazenie." + }, + "sendVerificationCode": { + "message": "Poslať overovací kód na váš e-mail" + }, + "sendCode": { + "message": "Odoslať kód" + }, + "codeSent": { + "message": "Kód bol odoslaný" + }, + "verificationCode": { + "message": "Overovací kód" + }, + "confirmIdentity": { + "message": "Ak chcete pokračovať, potvrďte svoju identitu." + }, + "verificationCodeRequired": { + "message": "Overovací kód je povinný." + }, + "invalidVerificationCode": { + "message": "Neplatný verifikačný kód" + }, + "continue": { + "message": "Pokračovať" + }, + "enterVerificationCodeApp": { + "message": "Zadajte 6-miestny overovací kód z vašej overovacej aplikácie." + }, + "enterVerificationCodeEmail": { + "message": "Zadajte 6-miestny overovací kód, ktorý bol zaslaný emailom na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Overovací email odoslaný na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapamätaj si ma" + }, + "sendVerificationCodeEmailAgain": { + "message": "Znovu zaslať overovací kód emailom" + }, + "useAnotherTwoStepMethod": { + "message": "Použiť inú dvojstupňovú metódu prihlásenia" + }, + "insertYubiKey": { + "message": "Vložte váš YubiKey do USB portu počítača a stlačte jeho tlačidlo." + }, + "insertU2f": { + "message": "Vložte váš bezpečnostný kľúč do USB portu počítača. Ak má tlačidlo, stlačte ho." + }, + "recoveryCodeDesc": { + "message": "Stratili ste prístup ku všetkým vašim dvojstupňovým poskytovateľom? Použite váš záchranný kód pre vypnutie všetkých poskytovateľov vo vašom účte." + }, + "recoveryCodeTitle": { + "message": "Kód na obnovenie" + }, + "authenticatorAppTitle": { + "message": "Overovacia aplikácia" + }, + "authenticatorAppDesc": { + "message": "Použite overovaciu aplikáciu (napríklad Authy alebo Google Authenticator) na generovanie časovo obmedzených overovacích kódov.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP bezpečnostný kľúč" + }, + "yubiKeyDesc": { + "message": "Použiť YubiKey pre prístup k vášmu účtu. Pracuje s YubiKey 4, 4 Nano, 4C a s NEO zariadeniami." + }, + "duoDesc": { + "message": "Overiť sa prostredníctvom Duo Security použitím Duo Mobile aplikácie, SMS, telefonátu alebo U2F bezpečnostným kľúčom.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Overiť sa prostredníctvom Duo Security vašej organizácie použitím Duo Mobile aplikácie, SMS, telefonátu alebo U2F bezpečnostným kľúčom.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Použiť akýkoľvek WebAuthn bezpečnostný kľúč pre prístup k vášmu účtu." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Overovacie kódy vám budú zaslané emailom." + }, + "loginUnavailable": { + "message": "Prihlásenie nedostupné" + }, + "noTwoStepProviders": { + "message": "Tento účet má povolené dvojstupňové prihlásenie, ale žiadny z nakonfigurovaných poskytovateľov nie je podporovaný na tomto zariadení." + }, + "noTwoStepProviders2": { + "message": "Prosím, pridajte ďalších poskytovateľov dvojstupňového overenia, ktoré majú lepšiu podporu naprieč zariadeniami (napríklad Autentifikačnú aplikáciu)." + }, + "twoStepOptions": { + "message": "Možnosti dvojstupňového prihlásenia" + }, + "selfHostedEnvironment": { + "message": "Prevádzkované vo vlastnom prostredí" + }, + "selfHostedEnvironmentFooter": { + "message": "Zadajte URL Bitwarden inštalácie, ktorú prevádzkujete vo vlastnom prostredí." + }, + "customEnvironment": { + "message": "Vlastné prostredie" + }, + "customEnvironmentFooter": { + "message": "Pre pokročilých používateľov. Môžete špecifikovať základnú URL pre každú službu nezávisle." + }, + "baseUrl": { + "message": "URL servera" + }, + "apiUrl": { + "message": "URL API servera" + }, + "webVaultUrl": { + "message": "URL servera webového trezora" + }, + "identityUrl": { + "message": "URL servera identít" + }, + "notificationsUrl": { + "message": "URL adresa servera pre oznámenia" + }, + "iconsUrl": { + "message": "URL servera ikon" + }, + "environmentSaved": { + "message": "URL prostredia boli uložené." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Áno" + }, + "no": { + "message": "Nie" + }, + "overwritePassword": { + "message": "Prepísať heslo" + }, + "learnMore": { + "message": "Zistiť viac" + }, + "featureUnavailable": { + "message": "Funkcia nie je k dispozícii" + }, + "loggedOut": { + "message": "Odhlásený" + }, + "loginExpired": { + "message": "Platnosť prihlásenia vypršala." + }, + "logOutConfirmation": { + "message": "Naozaj sa chcete odhlásiť?" + }, + "logOut": { + "message": "Odhlásiť sa" + }, + "addNewLogin": { + "message": "Pridať nové prihlasovacie údaje" + }, + "addNewItem": { + "message": "Pridať novú položku" + }, + "addNewFolder": { + "message": "Vytvoriť nový priečinok" + }, + "view": { + "message": "Zobraziť" + }, + "account": { + "message": "Účet" + }, + "loading": { + "message": "Načítava sa..." + }, + "lockVault": { + "message": "Zamknúť trezor" + }, + "passwordGenerator": { + "message": "Generátor hesla" + }, + "contactUs": { + "message": "Kontaktujte nás" + }, + "getHelp": { + "message": "Získať pomoc" + }, + "fileBugReport": { + "message": "Nahlásiť chybu" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Sledujte nás" + }, + "syncVault": { + "message": "Synchronizovať trezor teraz" + }, + "changeMasterPass": { + "message": "Zmeniť hlavné heslo" + }, + "changeMasterPasswordConfirmation": { + "message": "Svoje hlavné heslo môžete zmeniť vo webovom trezore bitwarden.com. Chcete teraz navštíviť túto stránku?" + }, + "fingerprintPhrase": { + "message": "Fráza odtlačku", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Fráza odtlačku vašeho účtu", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Prejsť do webového trezora" + }, + "getMobileApp": { + "message": "Získajte mobilnú aplikáciu" + }, + "getBrowserExtension": { + "message": "Získať rozšírenie pre prehliadač" + }, + "syncingComplete": { + "message": "Synchronizácia dokončená" + }, + "syncingFailed": { + "message": "Synchronizácia zlyhala" + }, + "yourVaultIsLocked": { + "message": "Váš trezor je uzamknutý. Ak chcete pokračovať, overte svoju identitu." + }, + "unlock": { + "message": "Odomknúť" + }, + "loggedInAsOn": { + "message": "Prihlásený ako $EMAIL$ na $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Neplatné hlavné heslo" + }, + "twoStepLoginConfirmation": { + "message": "Dvojstupňové prihlasovanie robí váš účet bezpečnejším vďaka vyžadovaniu bezpečnostného kódu z overovacej aplikácie vždy, keď sa prihlásite. Dvojstupňové prihlasovanie môžete povoliť vo webovom trezore bitwarden.com. Chcete teraz navštíviť túto stránku?" + }, + "twoStepLogin": { + "message": "Dvojstupňové prihlásenie" + }, + "vaultTimeout": { + "message": "Časový limit pre trezor" + }, + "vaultTimeoutDesc": { + "message": "Vyberte, kedy vyprší časový limit trezora a vykoná sa zvolená akcia." + }, + "immediately": { + "message": "Okamžite" + }, + "tenSeconds": { + "message": "10 sekúnd" + }, + "twentySeconds": { + "message": "20 sekúnd" + }, + "thirtySeconds": { + "message": "30 sekúnd" + }, + "oneMinute": { + "message": "1 minúta" + }, + "twoMinutes": { + "message": "2 minúty" + }, + "fiveMinutes": { + "message": "5 minút" + }, + "fifteenMinutes": { + "message": "15 minút" + }, + "thirtyMinutes": { + "message": "30 minút" + }, + "oneHour": { + "message": "1 hodina" + }, + "fourHours": { + "message": "4 hodiny" + }, + "onIdle": { + "message": "Keď je systém nečinný" + }, + "onSleep": { + "message": "Keď je systém v režime spánku" + }, + "onLocked": { + "message": "Keď je systém uzamknutý" + }, + "onRestart": { + "message": "Pri reštarte" + }, + "never": { + "message": "Nikdy" + }, + "security": { + "message": "Zabezpečenie" + }, + "clearClipboard": { + "message": "Vymazať schránku", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automaticky vymazať skopírované hodnoty zo schránky.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Nezobrazovať ikony stránok" + }, + "disableFaviconDesc": { + "message": "Ikony stránok poskytujú rozoznateľný obrázok vedľa každého prihlasovacieho údaju vo webovom trezore." + }, + "enableMinToTray": { + "message": "Minimalizovať na panel úloh" + }, + "enableMinToTrayDesc": { + "message": "Namiesto minimalizácie okna zobraziť ikonu v systémovej lište." + }, + "enableMinToMenuBar": { + "message": "Minimalizovať na panel úloh" + }, + "enableMinToMenuBarDesc": { + "message": "Namiesto minimalizácie okna zobraziť ikonu na paneli úloh." + }, + "enableCloseToTray": { + "message": "Zatvoriť do systémovej lišty" + }, + "enableCloseToTrayDesc": { + "message": "Namiesto zatvorenia okna zobraziť ikonu v systémovej lište." + }, + "enableCloseToMenuBar": { + "message": "Zavrieť na panel úloh" + }, + "enableCloseToMenuBarDesc": { + "message": "Namiesto zatvorenia okna zobraziť ikonu na paneli úloh." + }, + "enableTray": { + "message": "Povoliť ikonu na systémovej lište" + }, + "enableTrayDesc": { + "message": "Vždy zobraziť ikonu na systémovej lište." + }, + "startToTray": { + "message": "Spustiť minimalizované do ikony v systémovej lište" + }, + "startToTrayDesc": { + "message": "Pri prvom spustení aplikácie zobraziť iba ikonu v systémovej lište." + }, + "startToMenuBar": { + "message": "Spustiť na panel úloh" + }, + "startToMenuBarDesc": { + "message": "Pri prvom spustení aplikácie zobraziť iba ikonu na paneli úloh." + }, + "openAtLogin": { + "message": "Automaticky spustiť po prihlásení" + }, + "openAtLoginDesc": { + "message": "Po prihlásení automaticky spustí aplikáciu Bitwarden Desktop." + }, + "alwaysShowDock": { + "message": "Vždy zobraziť v docku" + }, + "alwaysShowDockDesc": { + "message": "Zobraziť Bitwarden v Docku aj keď je minimalizovaný na panel úloh." + }, + "confirmTrayTitle": { + "message": "Potvrdiť vypnutie systémovej lišty" + }, + "confirmTrayDesc": { + "message": "Vypnutím tohto nastavenia vypnete aj ostatné nastavenia súvisiace so systémovou lištou." + }, + "language": { + "message": "Jazyk" + }, + "languageDesc": { + "message": "Zmeňte jazyk aplikácie. Vyžaduje reštart." + }, + "theme": { + "message": "Motív" + }, + "themeDesc": { + "message": "Zmeniť farebný motív aplikácie." + }, + "dark": { + "message": "Tmavý", + "description": "Dark color" + }, + "light": { + "message": "Svetlý", + "description": "Light color" + }, + "copy": { + "message": "Kopírovať", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Skontrolovať aktualizácie" + }, + "version": { + "message": "Verzia $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Reštartovať pre dokončenie aktualizácie" + }, + "restartToUpdateDesc": { + "message": "Verzia $VERSION_NUM$ je pripravená na inštaláciu. Je nutné reštartovať aplikáciu, aby sa inštalácia mohla dokončiť. Chcete ju reŝtartovať a aktualizovať teraz?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "K dispozícii je nová aktualizácia" + }, + "updateAvailableDesc": { + "message": "Je dostupná nová aktualizácia. Chcete ju stiahnuť teraz?" + }, + "restart": { + "message": "Reštartovať" + }, + "later": { + "message": "Neskôr" + }, + "noUpdatesAvailable": { + "message": "K dispozícii nie sú žiadne aktualizácie. Používate poslednú verziu." + }, + "updateError": { + "message": "Chyba aktualizácie" + }, + "unknown": { + "message": "Neznáme" + }, + "copyUsername": { + "message": "Kopírovať používateľské meno" + }, + "copyNumber": { + "message": "Kopírovať číslo", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopírovať bezpečnostný kód", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Prémiové členstvo" + }, + "premiumManage": { + "message": "Spravovať členstvo" + }, + "premiumManageAlert": { + "message": "Svoje členstvo môžete spravovať vo webovom trezore bitwarden.com. Chcete navštíviť túto stránku teraz?" + }, + "premiumRefresh": { + "message": "Obnoviť členstvo" + }, + "premiumNotCurrentMember": { + "message": "Momentálne nie ste prémiovým členom." + }, + "premiumSignUpAndGet": { + "message": "Zaregistrujte sa pre prémiové členstvo a získajte:" + }, + "premiumSignUpStorage": { + "message": "1 GB šifrovaného úložiska." + }, + "premiumSignUpTwoStep": { + "message": "Ďalšie možnosti dvojstupňového prihlásenia ako YubiKey, FIDO U2F a Duo." + }, + "premiumSignUpReports": { + "message": "Správy o sile hesla, zabezpečení účtov a únikoch dát ktoré vám pomôžu udržať vaše kontá v bezpečí." + }, + "premiumSignUpTotp": { + "message": "Generátor TOTP verifikačného kódu (2FA) pre kontá vo vašom trezore." + }, + "premiumSignUpSupport": { + "message": "Prioritná zákaznícka podpora." + }, + "premiumSignUpFuture": { + "message": "Všetky budúce prémiové funkcie. Viac už čoskoro!" + }, + "premiumPurchase": { + "message": "Zakúpiť Prémium" + }, + "premiumPurchaseAlert": { + "message": "Svoje prémiové členstvo môžete zakúpiť vo webovom trezore bitwarden.com. Chcete navštíviť túto stránku teraz?" + }, + "premiumCurrentMember": { + "message": "Ste prémiovým členom!" + }, + "premiumCurrentMemberThanks": { + "message": "Ďakujeme za podporu Bitwarden." + }, + "premiumPrice": { + "message": "Všetko len za $PRICE$/rok!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Obnova kompletná" + }, + "passwordHistory": { + "message": "História hesla" + }, + "clear": { + "message": "Vyčistiť", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Neboli nájdené žiadne heslá." + }, + "undo": { + "message": "Späť" + }, + "redo": { + "message": "Opakovať" + }, + "cut": { + "message": "Vystrihnúť", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Vložiť", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Označiť všetko" + }, + "zoomIn": { + "message": "Priblížiť" + }, + "zoomOut": { + "message": "Oddialiť" + }, + "resetZoom": { + "message": "Obnoviť pôvodné zobrazenie" + }, + "toggleFullScreen": { + "message": "Prepnúť na celú obrazovku" + }, + "reload": { + "message": "Znovu načítať" + }, + "toggleDevTools": { + "message": "Prepnúť vývojárske nástroje" + }, + "minimize": { + "message": "Minimalizovať", + "description": "Minimize window" + }, + "zoom": { + "message": "Priblíženie" + }, + "bringAllToFront": { + "message": "Preniesť všetko dopredu", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "O Bitwarden" + }, + "services": { + "message": "Služby" + }, + "hideBitwarden": { + "message": "Skryť Bitwarden" + }, + "hideOthers": { + "message": "Skryť ostatné" + }, + "showAll": { + "message": "Zobraziť všetky" + }, + "quitBitwarden": { + "message": "Ukončiť Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ skopírované", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Nápoveď" + }, + "window": { + "message": "Okno" + }, + "checkPassword": { + "message": "Overiť či došlo k úniku hesla." + }, + "passwordExposed": { + "message": "Toto heslo uniklo $VALUE$-krát v dátových únikoch. Mali by ste ho zmeniť.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Heslo nebolo nájdene v žiadnom úniku dát. Malo by byť bezpečné." + }, + "baseDomain": { + "message": "Základná doména", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Názov domény", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Hostiteľ", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Presný" + }, + "startsWith": { + "message": "Začína na" + }, + "regEx": { + "message": "Regulárny výraz", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Spôsob mapovania", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Predvolené mapovanie", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Voľby prepínača" + }, + "organization": { + "message": "Organizácia", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Predvolené" + }, + "exit": { + "message": "Ukončiť" + }, + "showHide": { + "message": "Zobraziť / Skryť", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Skryť do systémovej lišty" + }, + "alwaysOnTop": { + "message": "Vždy na vrchu", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Aktualizované", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Heslo bolo aktualizované", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export trezoru" + }, + "fileFormat": { + "message": "Formát Súboru" + }, + "warning": { + "message": "UPOZORNENIE", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Potvrdiť export trezoru" + }, + "exportWarningDesc": { + "message": "Tento export obsahuje vaše dáta v nešifrovanom formáte. Nemali by ste ich ukladať, ani posielať cez nezabezpečené kanály (napr. email). Okamžite ho odstráňte, keď ho prestanete používať." + }, + "encExportKeyWarningDesc": { + "message": "Tento export zašifruje vaše údaje pomocou šifrovacieho kľúča vášho účtu. Ak niekedy budete rotovať šifrovací kľúč svojho účtu, mali by ste exportovať znova, pretože nebudete môcť dešifrovať tento exportovaný súbor." + }, + "encExportAccountWarningDesc": { + "message": "Šifrovacie kľúče účtu sú jedinečné pre každý používateľský účet Bitwarden, takže nemôžete importovať šifrovaný export do iného účtu." + }, + "noOrganizationsList": { + "message": "Nie ste členom žiadnej organizácie. Organizácie umožňujú bezpečne zdieľať položky s ostatnými používateľmi." + }, + "noCollectionsInList": { + "message": "Neexistujú žiadne zbierky na zobrazenie." + }, + "ownership": { + "message": "Vlastníctvo" + }, + "whoOwnsThisItem": { + "message": "Kto vlastní túto položku?" + }, + "strong": { + "message": "Silné", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobré", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Slabé", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Slabé hlavné heslo" + }, + "weakMasterPasswordDesc": { + "message": "Hlavné heslo, ktoré ste zadali, je slabé. Mali by ste použiť silné heslo (alebo frázu), aby ste spoľahlivo ochránili váš Bitwarden účet. Naozaj chcete použiť toto heslo?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Odomknúť pomocou PIN" + }, + "setYourPinCode": { + "message": "Nastaviť PIN kód na odomknutie Bitwarden. Nastavenie PIN sa vynuluje, ak úplne odhlásite z aplikácie." + }, + "pinRequired": { + "message": "PIN kód je povinný." + }, + "invalidPin": { + "message": "Neplatný PIN kód." + }, + "unlockWithWindowsHello": { + "message": "Odomknúť pomocou Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Overiť sa pre Bitwarden." + }, + "unlockWithTouchId": { + "message": "Odomknúť s Touch ID" + }, + "touchIdConsentMessage": { + "message": "odomknúť svoj trezor" + }, + "noAutoPromptWindowsHello": { + "message": "Pri spustení nezobrazovať výzvu na Windows Hello." + }, + "noAutoPromptTouchId": { + "message": "Pri spustení nezobrazovať výzvu na Touch ID." + }, + "lockWithMasterPassOnRestart": { + "message": "Pri reštarte zamknúť s hlavným heslom" + }, + "preferences": { + "message": "Predvoľby" + }, + "enableMenuBar": { + "message": "Povoliť ikonu na paneli úloh" + }, + "enableMenuBarDesc": { + "message": "Vždy zobraziť ikonu na paneli úloh." + }, + "hideToMenuBar": { + "message": "Skryť do panela úloh" + }, + "selectOneCollection": { + "message": "Musíte vybrať aspoň jednu zbierku." + }, + "premiumUpdated": { + "message": "Povýšili ste na prémium." + }, + "restore": { + "message": "Obnoviť" + }, + "premiumManageAlertAppStore": { + "message": "Predplatné môžete spravovať cez App Store. Chcete navštíviť App Store teraz?" + }, + "legal": { + "message": "Právne informácie", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Podmienky používania" + }, + "privacyPolicy": { + "message": "Zásady ochrany osobných údajov" + }, + "unsavedChangesConfirmation": { + "message": "Ste si istý, že chcete odísť? Ak teraz odídete, vaše aktuálne informácie nebudú uložené." + }, + "unsavedChangesTitle": { + "message": "Neuložené zmeny" + }, + "clone": { + "message": "Klonovať" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Jedno alebo viac nastavení organizácie ovplyvňujú vaše nastavenia generátora." + }, + "vaultTimeoutAction": { + "message": "Akcia pri vypršaní času pre trezor" + }, + "vaultTimeoutActionLockDesc": { + "message": "Uzamknutý trezor sa dá odomknúť opätovným zadaním hlavného hesla." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Odhlásený trezor bude vyžadovať opätovné prihlásenie aby ste k nemu mohli pristupovať." + }, + "lock": { + "message": "Uzamknúť", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Kôš", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Hľadať v koši" + }, + "permanentlyDeleteItem": { + "message": "Natrvalo odstrániť položku" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Naozaj chcete natrvalo odstrániť túto položku?" + }, + "permanentlyDeletedItem": { + "message": "Položka natrvalo odstránená" + }, + "restoreItem": { + "message": "Obnoviť položku" + }, + "restoreItemConfirmation": { + "message": "Naozaj chcete obnoviť túto položku?" + }, + "restoredItem": { + "message": "Obnovená položka" + }, + "permanentlyDelete": { + "message": "Natrvalo odstrániť" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Odhlásenie bude vyžadovať online prihlásenie po vypršaní časového limitu. Naozaj chcete použiť toto nastavenie?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Potvrdenie akcie pre vypršaný časový limit" + }, + "enterpriseSingleSignOn": { + "message": "Jednotné prihlásenie pre podniky (SSO)" + }, + "setMasterPassword": { + "message": "Nastaviť hlavné heslo" + }, + "ssoCompleteRegistration": { + "message": "Aby ste dokončili nastavenie prihlasovacieho portálu (SSO), prosím nastavte hlavné heslo na prístup a ochranu vášho trezora." + }, + "newMasterPass": { + "message": "Nové hlavné heslo" + }, + "confirmNewMasterPass": { + "message": "Potvrďte nové hlavné heslo" + }, + "masterPasswordPolicyInEffect": { + "message": "Jedno alebo viac pravidiel organizácie požadujú aby vaše hlavné heslo spĺňalo nasledujúce požiadavky:" + }, + "policyInEffectMinComplexity": { + "message": "Minimálna úroveň zložitosti $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimálna dĺžka $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Obsahuje aspoň jedno veľké písmeno" + }, + "policyInEffectLowercase": { + "message": "Obsahuje aspoň jedno malé písmeno" + }, + "policyInEffectNumbers": { + "message": "Obsahuje aspoň jednu číslicu" + }, + "policyInEffectSpecial": { + "message": "Obsahuje aspoň jeden z následujúcich špeciálnych znakov $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Vaše nové hlavné heslo nespĺňa pravidlá." + }, + "acceptPolicies": { + "message": "Označením tohto políčka súhlasíte s nasledovným:" + }, + "acceptPoliciesError": { + "message": "Neboli akceptované Podmienky používania a zásady Ochrany osobných údajov." + }, + "enableBrowserIntegration": { + "message": "Povoliť integráciu v prehliadači" + }, + "enableBrowserIntegrationDesc": { + "message": "Integrácia v prehliadači sa používa na biometriu v prehliadači." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Integrácia v prehliadači nie je podporovaná" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Bohužiaľ, integrácia v prehliadači je zatiaľ podporovaná iba vo verzii Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Integrácia v prehliadači nie je podporovaná" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Bohužiaľ, integrácia v prehliadači je zatiaľ podporovaná iba vo verzii Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Vyžadovať overenie pre integráciu v prehliadači" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Povoliť dodatočné zabezpečenie tým, že bude potrebné overenie odtlačku pri prepájaní desktopovej aplikácie a prehliadača. Ak je toto nastavenie zapnuté, pri každom pripojení bude od používateľa požadované overenie." + }, + "approve": { + "message": "Schváliť" + }, + "verifyBrowserTitle": { + "message": "Overiť pripojenie prehliadača" + }, + "verifyBrowserDesc": { + "message": "Uistite sa, že zobrazený odtlačok prsta je identický s odtlačkom prsta zobrazeným v rozšírení prehliadača." + }, + "biometricsNotEnabledTitle": { + "message": "Biometria nie je aktivovaná" + }, + "biometricsNotEnabledDesc": { + "message": "Biometria prehliadača vyžaduje, aby bola najskôr v nastaveniach povolená biometria počítača." + }, + "personalOwnershipSubmitError": { + "message": "Z dôvodu podnikovej politiky máte obmedzené ukladanie položiek do osobného trezora. Zmeňte možnosť vlastníctvo na organizáciu a vyberte si z dostupných zbierok." + }, + "hintEqualsPassword": { + "message": "Nápoveda pre heslo nemôže byť rovnaká ako heslo." + }, + "personalOwnershipPolicyInEffect": { + "message": "Politika organizácie ovplyvňuje vaše možnosti vlastníctva." + }, + "allSends": { + "message": "Všetky Sendy", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Súbor" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Hľadať Sendy", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Upraviť Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Môj trezor" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Dátum odstránenia" + }, + "deletionDateDesc": { + "message": "Send bude natrvalo odstránený v zadaný dátum a čas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Dátum exspirácie" + }, + "expirationDateDesc": { + "message": "Ak je nastavené, prístup k tomuto Sendu vyprší v zadaný dátum a čas.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximálny počet prístupov" + }, + "maxAccessCountDesc": { + "message": "Ak je nastavené, používatelia už nebudú mať prístup k tomuto Sendu po dosiahnutí maximálneho počtu prístupov.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Súčasný počet prístupov" + }, + "disableSend": { + "message": "Vypnúť tento Send, aby k nemu nikto nemal prístup.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Voliteľne môžete vyžadovať heslo pre používateľov na prístup k tomuto Sendu.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Zabezpečená poznámka o tomto Sende.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Odkaz na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Odkaz na Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Pri prístupe k Sendu, predvolene skryť text", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send vytvorený", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send upravený", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send odstránený", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nové heslo" + }, + "whatTypeOfSend": { + "message": "Aký typ Sendu to je?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Vytvoriť Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Text, ktorý chcete odoslať." + }, + "sendFileDesc": { + "message": "Súbor, ktorý chcete odoslať." + }, + "days": { + "message": "$DAYS$ dní", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 deň" + }, + "custom": { + "message": "Vlastné" + }, + "deleteSendConfirmation": { + "message": "Naozaj chcete odstrániť tento Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Kopírovať odkaz na Send do schránky", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kopírovať odkaz na zdieľanie tohto Sendu do schránky počas ukladania." + }, + "sendDisabled": { + "message": "Funkcia Send zakázaná", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Z dôvodu podnikovej politiky môžete odstrániť iba existujúci Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopírovať odkaz" + }, + "disabled": { + "message": "Zakázané" + }, + "maxAccessCountReached": { + "message": "Bol dosiahnutý maximálny počet prístupov" + }, + "expired": { + "message": "Exspirované" + }, + "pendingDeletion": { + "message": "Čakajúce odstránenie" + }, + "webAuthnAuthenticate": { + "message": "Overiť cez WebAuthn" + }, + "hideEmail": { + "message": "Skryť moju emailovú adresu pred príjemcami." + }, + "sendOptionsPolicyInEffect": { + "message": "Jedno alebo viac pravidiel organizácie ovplyvňujú vaše možnosti funkcie Send." + }, + "emailVerificationRequired": { + "message": "Vyžaduje sa overenie e-mailu" + }, + "emailVerificationRequiredDesc": { + "message": "Na používanie tejto funkcie musíte overiť svoj e-mail." + }, + "passwordPrompt": { + "message": "Znova zadajte hlavné heslo" + }, + "passwordConfirmation": { + "message": "Potvrdenie hlavného hesla" + }, + "passwordConfirmationDesc": { + "message": "Táto akcia je chránená. Ak chcete pokračovať, znova zadajte hlavné heslo a overte svoju totožnosť." + }, + "updatedMasterPassword": { + "message": "Hlavné heslo aktualizované" + }, + "updateMasterPassword": { + "message": "Aktualizovať hlavné heslo" + }, + "updateMasterPasswordWarning": { + "message": "Vaše hlavné heslo nedávno zmenil správca vo vašej organizácii. Ak chcete získať prístup k trezoru, musíte ho teraz aktualizovať. Pokračovaním sa odhlásite z aktuálnej relácie a budete sa musieť znova prihlásiť. Aktívne relácie na iných zariadeniach môžu zostať aktívne až jednu hodinu." + }, + "hours": { + "message": "Hodiny" + }, + "minutes": { + "message": "Minúty" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Zásady vašej organizácie ovplyvňujú časový limit trezoru. Maximálny povolený časový limit trezoru je $HOURS$ h a $MINUTES$ m", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Časový limit vášho trezora prekračuje obmedzenia nastavené vašou organizáciou." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatická registrácia" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Táto organizácia má podnikovú politiku, ktorá vás automaticky zaregistruje na obnovenie hesla. Registrácia umožní správcom organizácie zmeniť vaše hlavné heslo." + }, + "vaultExportDisabled": { + "message": "Export trezoru je zakázaný" + }, + "personalVaultExportPolicyInEffect": { + "message": "Jedna alebo viacero zásad organizácie vám bráni exportovať váš osobný trezor." + }, + "addAccount": { + "message": "Pridať účet" + }, + "removeMasterPassword": { + "message": "Odstrániť hlavné heslo" + }, + "removedMasterPassword": { + "message": "Hlavné heslo bolo odstránené." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ používa SSO s vlastným kľúčovým serverom. Na prihlásenie členov tejto organizácie už nie je potrebné hlavné heslo.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Opustiť organizáciu" + }, + "leaveOrganizationConfirmation": { + "message": "Ste si istý, že chcete opustiť túto organizáciu?" + }, + "leftOrganization": { + "message": "Opustili ste organizáciu." + }, + "ssoKeyConnectorUnavailable": { + "message": "Nie je možné kontaktovať kľúčový konektor, skúste to znova neskôr." + }, + "lockAllVaults": { + "message": "Zamknúť všetky trezory" + }, + "accountLimitReached": { + "message": "Súčasne nemôže byť prihlásených viac ako 5 účtov." + }, + "accountPreferences": { + "message": "Predvoľby" + }, + "appPreferences": { + "message": "Nastavenia aplikácie (Všetky účty)" + }, + "accountSwitcherLimitReached": { + "message": "Dosiahnutý limit počtu účtov. Odhláste sa z účtu aby ste mohli pridať ďalší." + }, + "settingsTitle": { + "message": "Nastavenia aplikácie pre $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Prepnúť účet" + }, + "options": { + "message": "Možnosti" + }, + "sessionTimeout": { + "message": "Vaša relácia vypršala. Vráťte sa späť a skúste sa prihlásiť znova." + }, + "exportingPersonalVaultTitle": { + "message": "Exportovanie osobného trezora" + }, + "exportingPersonalVaultDescription": { + "message": "Exportované budú iba položy osobného trezora spojené s $EMAIL$. Položky trezora organizácie nebudú zahrnuté.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generátor" + }, + "whatWouldYouLikeToGenerate": { + "message": "Čo by ste chceli vygenerovať?" + }, + "passwordType": { + "message": "Typ hesla" + }, + "regenerateUsername": { + "message": "Vygenerovať nové používateľské meno" + }, + "generateUsername": { + "message": "Vygenerovať používateľské meno" + }, + "usernameType": { + "message": "Typ používateľského mena" + }, + "plusAddressedEmail": { + "message": "E-mail s plusovým aliasom" + }, + "plusAddressedEmailDesc": { + "message": "Použiť možnosti subadresovania svojho poskytovateľa e-mailu." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Použiť doručenú poštu typu catch-all nastavenú na doméne." + }, + "random": { + "message": "Náhodné" + }, + "randomWord": { + "message": "Náhodné slovo" + }, + "websiteName": { + "message": "Názov stránky" + }, + "service": { + "message": "Služba" + } +} diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json new file mode 100644 index 0000000000..00e8d4063c --- /dev/null +++ b/apps/desktop/src/locales/sl/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtri" + }, + "allItems": { + "message": "Vsi elementi" + }, + "favorites": { + "message": "Priljubljene" + }, + "types": { + "message": "Tipi" + }, + "typeLogin": { + "message": "Prijava" + }, + "typeCard": { + "message": "Kartica" + }, + "typeIdentity": { + "message": "Identiteta" + }, + "typeSecureNote": { + "message": "Varni zapisek" + }, + "folders": { + "message": "Mape" + }, + "collections": { + "message": "Zbirke" + }, + "searchVault": { + "message": "Išči v trezorju" + }, + "addItem": { + "message": "Dodaj vnos" + }, + "shared": { + "message": "Deljeno" + }, + "share": { + "message": "Deli" + }, + "moveToOrganization": { + "message": "Premakni v organizacijo" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ premaknjen v $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Priloge" + }, + "viewItem": { + "message": "Ogled vnosa" + }, + "name": { + "message": "Naziv" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Nov URI" + }, + "username": { + "message": "Uporabniško ime" + }, + "password": { + "message": "Geslo" + }, + "passphrase": { + "message": "Šifrirna fraza" + }, + "editItem": { + "message": "Uredi vnos" + }, + "emailAddress": { + "message": "E-poštni naslov" + }, + "verificationCodeTotp": { + "message": "Verifikacijska koda (TOTP)" + }, + "website": { + "message": "Spletna stran" + }, + "notes": { + "message": "Zapiski" + }, + "customFields": { + "message": "Polja po meri" + }, + "launch": { + "message": "Zaženi" + }, + "copyValue": { + "message": "Kopiraj vrednost", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimiziraj okno pri kopiranju v odložišče" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimiziraj pri kopiranju podatkov elementa v odložišče." + }, + "toggleVisibility": { + "message": "Preklopi vidljivost" + }, + "toggleCollapse": { + "message": "Skrči/Razširi", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Imetnik kartice" + }, + "number": { + "message": "Številka" + }, + "brand": { + "message": "Znamka" + }, + "expiration": { + "message": "Datum poteka" + }, + "securityCode": { + "message": "Varnostna koda" + }, + "identityName": { + "message": "Ime identitete" + }, + "company": { + "message": "Podjetje" + }, + "ssn": { + "message": "Številka socialne varnosti" + }, + "passportNumber": { + "message": "Številka potnega lista" + }, + "licenseNumber": { + "message": "Številka dovoljenja" + }, + "email": { + "message": "E-pošta" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Naslov" + }, + "premiumRequired": { + "message": "Potrebno je premium članstvo" + }, + "premiumRequiredDesc": { + "message": "Za uporabo te funkcije je potrebno premium članstvo." + }, + "errorOccurred": { + "message": "Prišlo je do napake." + }, + "error": { + "message": "Napaka" + }, + "january": { + "message": "Januar" + }, + "february": { + "message": "Februar" + }, + "march": { + "message": "Marec" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Maj" + }, + "june": { + "message": "Junij" + }, + "july": { + "message": "Julij" + }, + "august": { + "message": "Avgust" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "npr.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Naziv" + }, + "mr": { + "message": "G" + }, + "mrs": { + "message": "Ga" + }, + "ms": { + "message": "Gdč" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Mesec poteka" + }, + "expirationYear": { + "message": "Leto poteka" + }, + "select": { + "message": "Izberi" + }, + "other": { + "message": "Drugo" + }, + "generatePassword": { + "message": "Generiraj geslo" + }, + "type": { + "message": "Tip" + }, + "firstName": { + "message": "Ime" + }, + "middleName": { + "message": "Srednje ime" + }, + "lastName": { + "message": "Priimek" + }, + "fullName": { + "message": "Polno ime" + }, + "address1": { + "message": "Naslov 1" + }, + "address2": { + "message": "Naslov 2" + }, + "address3": { + "message": "Naslov 3" + }, + "cityTown": { + "message": "Mesto / Naselje" + }, + "stateProvince": { + "message": "Država / Regija" + }, + "zipPostalCode": { + "message": "Poštna številka" + }, + "country": { + "message": "Država" + }, + "save": { + "message": "Shrani" + }, + "cancel": { + "message": "Prekliči" + }, + "delete": { + "message": "Izbriši" + }, + "favorite": { + "message": "Priljubljeno" + }, + "edit": { + "message": "Uredi" + }, + "authenticatorKeyTotp": { + "message": "Ključ avtentikatorja (TOTP)" + }, + "folder": { + "message": "Mapa" + }, + "newCustomField": { + "message": "Novo polje po meri" + }, + "value": { + "message": "Vrednost" + }, + "dragToSort": { + "message": "Povleci za sortiranje" + }, + "cfTypeText": { + "message": "Besedilo" + }, + "cfTypeHidden": { + "message": "Skrito" + }, + "cfTypeBoolean": { + "message": "Logična vrednost" + }, + "cfTypeLinked": { + "message": "Povezano", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Povezana vrednost", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Odstrani" + }, + "nameRequired": { + "message": "Ime je obvezen podatek." + }, + "addedItem": { + "message": "Vnos dodan" + }, + "editedItem": { + "message": "Vnos urejen" + }, + "deleteItem": { + "message": "Vnos odstranjen" + }, + "deleteFolder": { + "message": "Izbriši mapo" + }, + "deleteAttachment": { + "message": "Izbriši priponoko" + }, + "deleteItemConfirmation": { + "message": "Ali res želite poslati v koš?" + }, + "deletedItem": { + "message": "Pošlji vnos v smeti" + }, + "overwritePasswordConfirmation": { + "message": "Ali ste prepričani, da želite prepisati vaše trenutno geslo?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Brez mape", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Dodaj mapo" + }, + "editFolder": { + "message": "Uredi mapo" + }, + "regeneratePassword": { + "message": "Ponovno generiraj geslo" + }, + "copyPassword": { + "message": "Kopiraj geslo" + }, + "copyUri": { + "message": "Kopiraj URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopiraj verifikacijsko kodo (TOTP)" + }, + "length": { + "message": "Dolžina" + }, + "numWords": { + "message": "Število besed" + }, + "wordSeparator": { + "message": "Ločilo besed" + }, + "capitalize": { + "message": "Zapiši z veliko začetnico", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Vključi številko" + }, + "close": { + "message": "Zapri" + }, + "minNumbers": { + "message": "Minimalna števila" + }, + "minSpecial": { + "message": "Minimalno posebnih znakov", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Izogibaj se dvoumnim znakom" + }, + "searchCollection": { + "message": "Preišči zbirko" + }, + "searchFolder": { + "message": "Preišči mapo" + }, + "searchFavorites": { + "message": "Preišči priljubljene" + }, + "searchType": { + "message": "Preišči po tipih", + "description": "Search item type" + }, + "newAttachment": { + "message": "Dodaj novo priponko" + }, + "deletedAttachment": { + "message": "Izbriši priponko" + }, + "deleteAttachmentConfirmation": { + "message": "Ste prepričani, da želite izbrisati to priponko?" + }, + "attachmentSaved": { + "message": "Priponka je bila shranjena." + }, + "file": { + "message": "Datoteka" + }, + "selectFile": { + "message": "Izberite datoteko." + }, + "maxFileSize": { + "message": "Največja velikost datoteke je 500 MB." + }, + "updateKey": { + "message": "Te funkcije ne morete koristiti, dokler dokler ne posodobite vašega ključa za šifriranje." + }, + "editedFolder": { + "message": "Mapa je bila urejena" + }, + "addedFolder": { + "message": "Mapa je bila dodana" + }, + "deleteFolderConfirmation": { + "message": "Ali ste prepričani, da želite izbrisati to mapo?" + }, + "deletedFolder": { + "message": "Mapa je bila izbrisana" + }, + "loginOrCreateNewAccount": { + "message": "Prijavite se ali ustvarite nov račun za dostop do vašega varnega trezorja." + }, + "createAccount": { + "message": "Ustvari račun" + }, + "logIn": { + "message": "Prijava" + }, + "submit": { + "message": "Potrdi" + }, + "masterPass": { + "message": "Glavno geslo" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "Nastavitve" + }, + "passwordHint": { + "message": "Namig za geslo" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "Get master password hint" + }, + "emailRequired": { + "message": "Email address is required." + }, + "invalidEmail": { + "message": "Neveljaven epoštni naslov." + }, + "masterPassRequired": { + "message": "Master password is required." + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "Informacije o vnosu" + }, + "noItemsInList": { + "message": "Ni vnosov za prikaz." + }, + "sendVerificationCode": { + "message": "Pošlji verifikacijsko kodo po e-pošti" + }, + "sendCode": { + "message": "Pošlji kodo" + }, + "codeSent": { + "message": "Koda poslana" + }, + "verificationCode": { + "message": "Verifikacijska koda" + }, + "confirmIdentity": { + "message": "Potrdite svojo identiteto za nadaljevanje." + }, + "verificationCodeRequired": { + "message": "Potrebna je verifikacijska koda." + }, + "invalidVerificationCode": { + "message": "Neveljavna verifikacijska koda" + }, + "continue": { + "message": "Nadaljuj" + }, + "enterVerificationCodeApp": { + "message": "Vnesite 6-mestno verifikacijsko kodo iz vaše avtentikacijske aplikacije." + }, + "enterVerificationCodeEmail": { + "message": "Vnesite 6-mestno verifikacijsko kodo, ki vam je bila poslana na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Potrditveno sporočilo poslano na $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Zapomni si me" + }, + "sendVerificationCodeEmailAgain": { + "message": "Ponovno pošlji verifikacijsko kodo" + }, + "useAnotherTwoStepMethod": { + "message": "Use another two-step login method" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "Koda za obnovitev" + }, + "authenticatorAppTitle": { + "message": "Avtentikacijska aplikacija" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "E-pošta" + }, + "emailDesc": { + "message": "Potrditvene kode vam bodo posredovane po e-pošti." + }, + "loginUnavailable": { + "message": "Prijava ni na voljo" + }, + "noTwoStepProviders": { + "message": "Ta račun ima omogočemo prijavo v dveh korakih, ampak nobena izmed konfiguriranih ni podprta v tem spletnem brskalniku." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "Two-step Login Options" + }, + "selfHostedEnvironment": { + "message": "Okolje z lastnim gostovanjem" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premises hosted Bitwarden installation." + }, + "customEnvironment": { + "message": "Okolje po meri" + }, + "customEnvironmentFooter": { + "message": "Za napredne uporabnike. Lahko specificirate osnovni URL, ločeno za vsako storitev." + }, + "baseUrl": { + "message": "URL naslov strežnika" + }, + "apiUrl": { + "message": "URL API strežnika" + }, + "webVaultUrl": { + "message": "URL strežniškega spletnega trezorja" + }, + "identityUrl": { + "message": "Prepoznaj strežnikov URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "URL strežnika ikon" + }, + "environmentSaved": { + "message": "Okoljski URLji so bili shranjeni." + }, + "ok": { + "message": "V redu" + }, + "yes": { + "message": "Da" + }, + "no": { + "message": "Ne" + }, + "overwritePassword": { + "message": "Prepiši geslo" + }, + "learnMore": { + "message": "Več o tem" + }, + "featureUnavailable": { + "message": "Funkcija ni na voljo" + }, + "loggedOut": { + "message": "Odjavljen" + }, + "loginExpired": { + "message": "Vaša seja je potekla." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Odjavi se" + }, + "addNewLogin": { + "message": "Dodaj prijavo" + }, + "addNewItem": { + "message": "Dodaj nov element" + }, + "addNewFolder": { + "message": "Dodaj novo mapo" + }, + "view": { + "message": "Pogled" + }, + "account": { + "message": "Račun" + }, + "loading": { + "message": "Nalaganje..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Generator gesel" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Prijavi napako" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Sledite nam" + }, + "syncVault": { + "message": "Sinhroniziraj trezor" + }, + "changeMasterPass": { + "message": "Spremeni glavno geslo" + }, + "changeMasterPasswordConfirmation": { + "message": "Svoje glavno geslo lahko spremenite v bitwarden.com spletnem trezorju. Želite obiskati spletno stran zdaj?" + }, + "fingerprintPhrase": { + "message": "Fraza prstnega odtisa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Fraza prstnega odtisa vašega računa", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Pojdite v spletni trezor" + }, + "getMobileApp": { + "message": "Priskrbite si mobilno aplikacijo" + }, + "getBrowserExtension": { + "message": "Namesti razširitev za brskalnik" + }, + "syncingComplete": { + "message": "Sinhronizacija končana" + }, + "syncingFailed": { + "message": "Sinhronizacija ni uspela" + }, + "yourVaultIsLocked": { + "message": "Vaš trezor je zaklenjen. Potrdite svojo identiteto za nadaljevanje." + }, + "unlock": { + "message": "Odkleni" + }, + "loggedInAsOn": { + "message": "Prijavljeni kot $EMAIL$ na $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Napačno glavno geslo" + }, + "twoStepLoginConfirmation": { + "message": "Avtentikacija v dveh korakih naredi vaš račun bolj varen, saj od vas zahteva, da svojo prijavo preverite z drugo napravo, kot je varnostni ključ, aplikacija za preverjanje pristnosti, SMS, telefonski klic ali e-pošta. V spletnem trezorju bitwarden.com je lahko omogočite prijavo v dveh korakih. Ali želite spletno stran obiskati sedaj?" + }, + "twoStepLogin": { + "message": "Prijava v dveh korakih" + }, + "vaultTimeout": { + "message": "Časovna omejitev trezorja" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "Nemudoma" + }, + "tenSeconds": { + "message": "10 sekund" + }, + "twentySeconds": { + "message": "20 sekund" + }, + "thirtySeconds": { + "message": "30 sekund" + }, + "oneMinute": { + "message": "1 minuta" + }, + "twoMinutes": { + "message": "2 minuti" + }, + "fiveMinutes": { + "message": "5 minut" + }, + "fifteenMinutes": { + "message": "15 minut" + }, + "thirtyMinutes": { + "message": "30 minut" + }, + "oneHour": { + "message": "1 ura" + }, + "fourHours": { + "message": "4 ure" + }, + "onIdle": { + "message": "Ob nedejavnosti sistema" + }, + "onSleep": { + "message": "Ob spanju sistema" + }, + "onLocked": { + "message": "Ob zaklepu sistema" + }, + "onRestart": { + "message": "Ob ponovnem zagonu aplikacije" + }, + "never": { + "message": "Nikoli" + }, + "security": { + "message": "Varnost" + }, + "clearClipboard": { + "message": "Počisti odložišče", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Samodejno počisti kopirane vrednosti iz odložišča.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Onemogoči ikone spletnih mest" + }, + "disableFaviconDesc": { + "message": "Ikone spletnih mest ponujajo prepoznavne ikone zraven prijav v vašem trezorju." + }, + "enableMinToTray": { + "message": "Pomanjšaj v orodno vrstico" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Jezik" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Spremeni temo aplikacije." + }, + "dark": { + "message": "Temna", + "description": "Dark color" + }, + "light": { + "message": "Svetla", + "description": "Light color" + }, + "copy": { + "message": "Kopiraj", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Preveri za posodobitve" + }, + "version": { + "message": "Različica $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Ponovno zaženi za posodobitev" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart the application to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Posodobitev je na voljo" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "Ponovno zaženi" + }, + "later": { + "message": "Pozneje" + }, + "noUpdatesAvailable": { + "message": "No updates are currently available. You are using the latest version." + }, + "updateError": { + "message": "Napaka pri posodabljanju" + }, + "unknown": { + "message": "Neznano" + }, + "copyUsername": { + "message": "Kopiraj uporabniško ime" + }, + "copyNumber": { + "message": "Kopiraj številko", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiraj varnostno kodo", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium članstvo" + }, + "premiumManage": { + "message": "Upravljanje članstva" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Osvežite članstvo" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB encrypted storage for file attachments." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting Bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Osveževanje zaključeno" + }, + "passwordHistory": { + "message": "Zgodovina gesla" + }, + "clear": { + "message": "Počisti", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Ni gesel za na seznam." + }, + "undo": { + "message": "Razveljavi" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "Izreži", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Prilepi", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Izberi vse" + }, + "zoomIn": { + "message": "Povečaj" + }, + "zoomOut": { + "message": "Pomanjšaj" + }, + "resetZoom": { + "message": "Ponastavi povečavo" + }, + "toggleFullScreen": { + "message": "Celozaslonski način" + }, + "reload": { + "message": "Ponovno naloži" + }, + "toggleDevTools": { + "message": "Toggle Developer Tools" + }, + "minimize": { + "message": "Minimiziraj", + "description": "Minimize window" + }, + "zoom": { + "message": "Povečava" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Storitve" + }, + "hideBitwarden": { + "message": "Hide Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "Pokaži vse" + }, + "quitBitwarden": { + "message": "Izhod iz Bitwardena" + }, + "valueCopied": { + "message": "$VALUE$ copied", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Pomoč" + }, + "window": { + "message": "Okno" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "To geslo je bilo med ukradenimi podatki izpostavljeno $VALUE$ krat. Zamenjajte ga.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "To geslo do sedaj ni bilo najdeno v zbirkah ukradenih podatkov. Njegova uporaba bi morala biti varna." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Gostitelj", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Točno" + }, + "startsWith": { + "message": "Začne se z" + }, + "regEx": { + "message": "Regularni izraz", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Zaznavanje ujemanja", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Privzet način ujemanja", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organizacija", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Privzeto" + }, + "exit": { + "message": "Izhod" + }, + "showHide": { + "message": "Prikaži / Skrij", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Vedno na vrhu", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Posodobljeno", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Geslo je bilo posodobljeno", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Izvoz trezorja" + }, + "fileFormat": { + "message": "Format datoteke" + }, + "warning": { + "message": "OPOZORILO", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Potrdite izvoz trezorja" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Lastništvo" + }, + "whoOwnsThisItem": { + "message": "Kdo je lastnik tega vnosa?" + }, + "strong": { + "message": "Močno", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Dobro", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Šibko", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Šibko glavno geslo" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Odkleni s PIN kodo" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "Potrebna je PIN koda." + }, + "invalidPin": { + "message": "Nepravilna koda PIN." + }, + "unlockWithWindowsHello": { + "message": "Odkleni z WindowsHello" + }, + "windowsHelloConsentMessage": { + "message": "Preverite za Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "odklenite vaš trezor" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Zakleni z glavnim geslom ob ponovnem zagonu" + }, + "preferences": { + "message": "Možnosti" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Odobri" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "Vsi Sendsi", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Datoteka" + }, + "sendTypeText": { + "message": "Besedilo" + }, + "searchSends": { + "message": "Išči Sendse", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Uredi Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Moj trezor" + }, + "text": { + "message": "Besedilo" + }, + "deletionDate": { + "message": "Datum izbrisa" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Datum poteka" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Največje število dostopov" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Pošlji povezavo", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Pošlji povezavo", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send ustvarjen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send urejen", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send izbrisan", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Novo geslo" + }, + "whatTypeOfSend": { + "message": "Kakšne vrste Send je to?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Ustvari Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Besedilo, ki ga želite poslati." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Potrdi glavno geslo" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Glavno geslo je bilo posodobljeno" + }, + "updateMasterPassword": { + "message": "Posodobi glavno geslo" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Ure" + }, + "minutes": { + "message": "Minute" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Izvoz trezorja je onemogočen" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Odstranite glavno geslo" + }, + "removedMasterPassword": { + "message": "Glavno geslo je bilo odstranjeno." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Zapusti organizacijo" + }, + "leaveOrganizationConfirmation": { + "message": "Ste prepričani, da želite zapustiti to organizacijo?" + }, + "leftOrganization": { + "message": "Zapustili ste organizacijo." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json new file mode 100644 index 0000000000..832c19216b --- /dev/null +++ b/apps/desktop/src/locales/sr/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Филтери" + }, + "allItems": { + "message": "Све ставке" + }, + "favorites": { + "message": "Омиљени" + }, + "types": { + "message": "Врсте" + }, + "typeLogin": { + "message": "Пријава" + }, + "typeCard": { + "message": "Кредитна Картица" + }, + "typeIdentity": { + "message": "Идентитет" + }, + "typeSecureNote": { + "message": "Сигурносна белешка" + }, + "folders": { + "message": "Фасцикле" + }, + "collections": { + "message": "Колекције" + }, + "searchVault": { + "message": "Претражи сеф" + }, + "addItem": { + "message": "Додај ставку" + }, + "shared": { + "message": "Дељено" + }, + "share": { + "message": "Подели" + }, + "moveToOrganization": { + "message": "Премести у организацију" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ премештен у $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Изаберите организацију у коју желите да преместите овај предмет. Прелазак на организацију преноси власништво над ставком у ту организацију. Више нећете бити директни власник ове ставке након што је премештена." + }, + "attachments": { + "message": "Прилози" + }, + "viewItem": { + "message": "Види ставку" + }, + "name": { + "message": "Име" + }, + "uri": { + "message": "УРЛ" + }, + "uriPosition": { + "message": "УРЛ $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Нови УРЛ" + }, + "username": { + "message": "Корисничко име" + }, + "password": { + "message": "Лозинка" + }, + "passphrase": { + "message": "Скривена фраза" + }, + "editItem": { + "message": "Уреди ставку" + }, + "emailAddress": { + "message": "Имејл" + }, + "verificationCodeTotp": { + "message": "Једнократни код" + }, + "website": { + "message": "Веб сајт" + }, + "notes": { + "message": "Белешке" + }, + "customFields": { + "message": "Прилагођена Поља" + }, + "launch": { + "message": "Отвори" + }, + "copyValue": { + "message": "Копирај вредност", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Минимизирај приликом копирања у привремену меморију" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Минимизирај при копиранју података ставке у привремену меморију." + }, + "toggleVisibility": { + "message": "Промени видљивост" + }, + "toggleCollapse": { + "message": "Промени проширење", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Име Власника Картице" + }, + "number": { + "message": "Број" + }, + "brand": { + "message": "Произвођач" + }, + "expiration": { + "message": "Истек" + }, + "securityCode": { + "message": "Сигурносни код" + }, + "identityName": { + "message": "Име идентитета" + }, + "company": { + "message": "Предузеће" + }, + "ssn": { + "message": "Број социјалног осигурања" + }, + "passportNumber": { + "message": "Број пасоша" + }, + "licenseNumber": { + "message": "Број возачке дозволе" + }, + "email": { + "message": "Имејл" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адреса" + }, + "premiumRequired": { + "message": "Потребан Премијум" + }, + "premiumRequiredDesc": { + "message": "Премиум чланарина је неопходна како бисте користили ову опцију." + }, + "errorOccurred": { + "message": "Појавила се грешка." + }, + "error": { + "message": "Грешка" + }, + "january": { + "message": "Јануар" + }, + "february": { + "message": "Фебруар" + }, + "march": { + "message": "Mart" + }, + "april": { + "message": "Април" + }, + "may": { + "message": "Мај" + }, + "june": { + "message": "Јун" + }, + "july": { + "message": "Јул" + }, + "august": { + "message": "Август" + }, + "september": { + "message": "Септембар" + }, + "october": { + "message": "Октобар" + }, + "november": { + "message": "Новембар" + }, + "december": { + "message": "Децембар" + }, + "ex": { + "message": "нпр.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Наслов" + }, + "mr": { + "message": "Господин" + }, + "mrs": { + "message": "Госпођица" + }, + "ms": { + "message": "Госпођа" + }, + "dr": { + "message": "Др" + }, + "expirationMonth": { + "message": "Месец истека" + }, + "expirationYear": { + "message": "Година истека" + }, + "select": { + "message": "Изабери" + }, + "other": { + "message": "Остало" + }, + "generatePassword": { + "message": "Генерисање лозинке" + }, + "type": { + "message": "Тип" + }, + "firstName": { + "message": "Име" + }, + "middleName": { + "message": "Средње име" + }, + "lastName": { + "message": "Презиме" + }, + "fullName": { + "message": "Пуно име" + }, + "address1": { + "message": "Адреса 1" + }, + "address2": { + "message": "Адреса 2" + }, + "address3": { + "message": "Адреса 3" + }, + "cityTown": { + "message": "Град" + }, + "stateProvince": { + "message": "Држава / покрајина" + }, + "zipPostalCode": { + "message": "Поштански број" + }, + "country": { + "message": "Земља" + }, + "save": { + "message": "Сачувај" + }, + "cancel": { + "message": "Откажи" + }, + "delete": { + "message": "Обриши" + }, + "favorite": { + "message": "Омиљено" + }, + "edit": { + "message": "Уреди" + }, + "authenticatorKeyTotp": { + "message": "Једнократни код" + }, + "folder": { + "message": "Фасцикла" + }, + "newCustomField": { + "message": "Ново прилагођено поље" + }, + "value": { + "message": "Вредност" + }, + "dragToSort": { + "message": "Превуците за сортирање" + }, + "cfTypeText": { + "message": "Текст" + }, + "cfTypeHidden": { + "message": "Сакривено" + }, + "cfTypeBoolean": { + "message": "Булове" + }, + "cfTypeLinked": { + "message": "Повезано", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Вредност повезана", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Уклони" + }, + "nameRequired": { + "message": "Име је неопходно." + }, + "addedItem": { + "message": "Ставка додата" + }, + "editedItem": { + "message": "Ставка уређена" + }, + "deleteItem": { + "message": "Обриши ставку" + }, + "deleteFolder": { + "message": "Избриши фасциклу" + }, + "deleteAttachment": { + "message": "Избриши прилог" + }, + "deleteItemConfirmation": { + "message": "Сигурно послати ставку у отпад?" + }, + "deletedItem": { + "message": "Ставка послата у Отпад" + }, + "overwritePasswordConfirmation": { + "message": "Сигурно променити тренутну лозинку?" + }, + "overwriteUsername": { + "message": "Препиши име" + }, + "overwriteUsernameConfirmation": { + "message": "Сигурно преписати тренутно име?" + }, + "noneFolder": { + "message": "Без фасцикле", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Додај фасциклу" + }, + "editFolder": { + "message": "Уреди фасциклу" + }, + "regeneratePassword": { + "message": "Поново генериши лозинку" + }, + "copyPassword": { + "message": "Копирај лозинку" + }, + "copyUri": { + "message": "Копирај УРЛ" + }, + "copyVerificationCodeTotp": { + "message": "Копирај потврдни код (TOTP)" + }, + "length": { + "message": "Дужина" + }, + "numWords": { + "message": "Број речи" + }, + "wordSeparator": { + "message": "Одвајач речи" + }, + "capitalize": { + "message": "Прво слово велико", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Убаци број" + }, + "close": { + "message": "Затвори" + }, + "minNumbers": { + "message": "Минимално Бројева" + }, + "minSpecial": { + "message": "Минимално Специјално", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Избегавај двосмислене карактере" + }, + "searchCollection": { + "message": "Претражи колекцију" + }, + "searchFolder": { + "message": "Претражи фасциклу" + }, + "searchFavorites": { + "message": "Претражи омиљене" + }, + "searchType": { + "message": "Претражи тип", + "description": "Search item type" + }, + "newAttachment": { + "message": "Додај нови прилог" + }, + "deletedAttachment": { + "message": "Прилог избрисан" + }, + "deleteAttachmentConfirmation": { + "message": "Сигурно обрисати овај прилог?" + }, + "attachmentSaved": { + "message": "Прилог је сачуван." + }, + "file": { + "message": "Датотека" + }, + "selectFile": { + "message": "Изабери датотеку." + }, + "maxFileSize": { + "message": "Максимална величина је 500МБ." + }, + "updateKey": { + "message": "Не можете да користите ову опцију док не промените Ваш кључ за шифровање." + }, + "editedFolder": { + "message": "Фасцикла измењена" + }, + "addedFolder": { + "message": "Фасцикла додата" + }, + "deleteFolderConfirmation": { + "message": "Сигурно обрисати ову фасциклу?" + }, + "deletedFolder": { + "message": "Фасцикла обрисана" + }, + "loginOrCreateNewAccount": { + "message": "Пријавите се или креирајте нови налог за приступ Сефу." + }, + "createAccount": { + "message": "Креирај налог" + }, + "logIn": { + "message": "Пријавите се" + }, + "submit": { + "message": "Пошаљи" + }, + "masterPass": { + "message": "Главна Лозинка" + }, + "masterPassDesc": { + "message": "Главна Лозинка је лозинка коју користите за приступ Вашем сефу. Врло је важно да је не заборавите. Не постоји начин да повратите лозинку у случају да је заборавите." + }, + "masterPassHintDesc": { + "message": "Савет Главне Лозинке може да Вам помогне да се подсетите ако је заборавите." + }, + "reTypeMasterPass": { + "message": "Поновите Главну Лозинку" + }, + "masterPassHint": { + "message": "Савет Главне Лозинке (опционо)" + }, + "settings": { + "message": "Подешавања" + }, + "passwordHint": { + "message": "Савет главне лозинке" + }, + "enterEmailToGetHint": { + "message": "Унесите Ваш имејл да би добили савет за Вашу Главну Лозинку." + }, + "getMasterPasswordHint": { + "message": "Добити савет за Главну Лозинку" + }, + "emailRequired": { + "message": "Имејл је неопходан." + }, + "invalidEmail": { + "message": "Неисправан имејл." + }, + "masterPassRequired": { + "message": "Главна Лозинка је неопходна." + }, + "masterPassLength": { + "message": "Главна Лозинка треба имати бар 8 знака." + }, + "masterPassDoesntMatch": { + "message": "Потврђена Главна Лозинка се не подудара." + }, + "newAccountCreated": { + "message": "Ваш налог је креиран! Сада се можете пријавити." + }, + "masterPassSent": { + "message": "Послали смо Вам поруку са саветом главне лозинке." + }, + "unexpectedError": { + "message": "Дошло је до неочекиване грешке." + }, + "itemInformation": { + "message": "Инфо о ставци" + }, + "noItemsInList": { + "message": "Нема ставке која се може приказати." + }, + "sendVerificationCode": { + "message": "Пошаљите верификациони код на вашу е-пошту" + }, + "sendCode": { + "message": "Пошаљи код" + }, + "codeSent": { + "message": "Код послан" + }, + "verificationCode": { + "message": "Верификациони код" + }, + "confirmIdentity": { + "message": "Потврдите свој идентитет да би наставили." + }, + "verificationCodeRequired": { + "message": "Верификациони код је обавезан." + }, + "invalidVerificationCode": { + "message": "Неисправан верификациони код" + }, + "continue": { + "message": "Настави" + }, + "enterVerificationCodeApp": { + "message": "Унесите шестоцифрени верификациони код из апликације за утврђивање аутентичности." + }, + "enterVerificationCodeEmail": { + "message": "Унесите шестоцифрени верификациони код који је послан на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Провера имејла послата на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Запамти ме" + }, + "sendVerificationCodeEmailAgain": { + "message": "Поново послати верификациони код на имејл" + }, + "useAnotherTwoStepMethod": { + "message": "Користите другу методу пријављивања у два корака" + }, + "insertYubiKey": { + "message": "Убаците свој YubiKey у УСБ порт рачунара, а затим додирните његово дугме." + }, + "insertU2f": { + "message": "Убаците свој сигурносни кључ у УСБ порт рачунара, и ако има дугме , додирните га." + }, + "recoveryCodeDesc": { + "message": "Изгубили сте приступ свим својим двофакторским добављачима? Употребите код за опоравак да онемогућите све двофакторске добављаче из налога." + }, + "recoveryCodeTitle": { + "message": "Шифра за опоравак" + }, + "authenticatorAppTitle": { + "message": "Апликација Аутентификатор" + }, + "authenticatorAppDesc": { + "message": "Користите апликацију за аутентификацију (као што је Authy или Google Authenticator) за генерисање верификационих кодова.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP сигурносни кључ" + }, + "yubiKeyDesc": { + "message": "Користите YubiKey за приступ налогу. Ради са YubiKey 4, 4 Nano, 4C, и NEO уређајима." + }, + "duoDesc": { + "message": "Провери са Duo Security користећи Duo Mobile апликацију, СМС, телефонски позив, или U2F кључ.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Провери са Duo Security за вашу организацију користећи Duo Mobile апликацију, СМС, телефонски позив, или U2F кључ.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Користите било који WebAuthn сигурносни кључ за присту налогу." + }, + "emailTitle": { + "message": "Имејл" + }, + "emailDesc": { + "message": "Верификациони кодови ће вам бити послати имејлом." + }, + "loginUnavailable": { + "message": "Пријава недоступна" + }, + "noTwoStepProviders": { + "message": "Овај налог има омогућено пријављивање у два корака, међутим уређај не подржава ниједног од конфигурисаних добављача." + }, + "noTwoStepProviders2": { + "message": "Додајте додатне добављаче који су боље подржани на свим уређајима (као што је апликација за утврђивање аутентичности)." + }, + "twoStepOptions": { + "message": "Опције дво-коракне пријаве" + }, + "selfHostedEnvironment": { + "message": "Самостално окружење" + }, + "selfHostedEnvironmentFooter": { + "message": "Наведите основни УРЛ ваше локалне Bitwarden инсталације." + }, + "customEnvironment": { + "message": "Прилагођено окружење" + }, + "customEnvironmentFooter": { + "message": "За напредне кориснике. Можете да одредите независно основни УРЛ сваког сервиса." + }, + "baseUrl": { + "message": "УРЛ Сервера" + }, + "apiUrl": { + "message": "УРЛ АПИ Сервера" + }, + "webVaultUrl": { + "message": "УРЛ сервера Сефа" + }, + "identityUrl": { + "message": "УРЛ сервера идентитета" + }, + "notificationsUrl": { + "message": "УРЛ сервера обавештења" + }, + "iconsUrl": { + "message": "УРЛ сервера иконице" + }, + "environmentSaved": { + "message": "УРЛ адресе окружења су сачуване." + }, + "ok": { + "message": "У реду" + }, + "yes": { + "message": "Да" + }, + "no": { + "message": "Не" + }, + "overwritePassword": { + "message": "Промени лозинку" + }, + "learnMore": { + "message": "Сазнај више" + }, + "featureUnavailable": { + "message": "Функција је недоступна" + }, + "loggedOut": { + "message": "Одјављено" + }, + "loginExpired": { + "message": "Ваша сесија је истекла." + }, + "logOutConfirmation": { + "message": "Заиста желите да се одјавите?" + }, + "logOut": { + "message": "Одјави се" + }, + "addNewLogin": { + "message": "Додај нову пријаву" + }, + "addNewItem": { + "message": "Додај нову ставку" + }, + "addNewFolder": { + "message": "Додај нову фасциклу" + }, + "view": { + "message": "Приказ" + }, + "account": { + "message": "Налог" + }, + "loading": { + "message": "Учитавање..." + }, + "lockVault": { + "message": "Закључај сеф" + }, + "passwordGenerator": { + "message": "Генератор Лозинке" + }, + "contactUs": { + "message": "Контактирајте нас" + }, + "getHelp": { + "message": "Потражи помоћ" + }, + "fileBugReport": { + "message": "Пријавите грешку" + }, + "blog": { + "message": "Блог" + }, + "followUs": { + "message": "Пратите нас" + }, + "syncVault": { + "message": "Синхронизуј сеф" + }, + "changeMasterPass": { + "message": "Промени главну лозинку" + }, + "changeMasterPasswordConfirmation": { + "message": "Можете променити главну лозинку у Вашем сефу на bitwarden.com. Да ли желите да посетите веб страницу сада?" + }, + "fingerprintPhrase": { + "message": "Сигурносна Фраза Сефа", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Ваша Сигурносна Фраза Сефа", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Ићи на Сеф" + }, + "getMobileApp": { + "message": "Апликација за телефон" + }, + "getBrowserExtension": { + "message": "Додатак за прегледач" + }, + "syncingComplete": { + "message": "Синхронизација је завршена" + }, + "syncingFailed": { + "message": "Синхронизација није успела" + }, + "yourVaultIsLocked": { + "message": "Сеф је заклјучан. Унесите главну лозинку за наставак." + }, + "unlock": { + "message": "Откључај" + }, + "loggedInAsOn": { + "message": "Пријављено са $EMAIL$ на $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Погрешна главна лозинка" + }, + "twoStepLoginConfirmation": { + "message": "Пријава у два корака чини ваш налог сигурнијим захтевом да верификујете своје податке помоћу другог уређаја, као што су безбедносни кључ, апликација, СМС-а, телефонски позив или имејл. Пријављивање у два корака може се омогућити на веб сефу. Да ли желите да посетите веб страницу сада?" + }, + "twoStepLogin": { + "message": "Дво-коракна лозинка" + }, + "vaultTimeout": { + "message": "Тајмаут сефа" + }, + "vaultTimeoutDesc": { + "message": "Изаберите када ће сеф истећи и извршити одабрану радњу." + }, + "immediately": { + "message": "Одмах" + }, + "tenSeconds": { + "message": "10 секунди" + }, + "twentySeconds": { + "message": "20 секунди" + }, + "thirtySeconds": { + "message": "30 секунди" + }, + "oneMinute": { + "message": "1 минут" + }, + "twoMinutes": { + "message": "2 минута" + }, + "fiveMinutes": { + "message": "5 минута" + }, + "fifteenMinutes": { + "message": "15 минута" + }, + "thirtyMinutes": { + "message": "30 минута" + }, + "oneHour": { + "message": "1 сат" + }, + "fourHours": { + "message": "4 сата" + }, + "onIdle": { + "message": "На мировање система" + }, + "onSleep": { + "message": "Након спаванја система" + }, + "onLocked": { + "message": "На закључавање система" + }, + "onRestart": { + "message": "На поновно покретање" + }, + "never": { + "message": "Никада" + }, + "security": { + "message": "Сигурност" + }, + "clearClipboard": { + "message": "Обриши привремену меморију", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Аутоматски обришите копиране вредности из привремене меморије.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Онемогући иконице сајта" + }, + "disableFaviconDesc": { + "message": "Иконе веб сајта пружају препознатљиву слику поред сваке пријаве у сефу." + }, + "enableMinToTray": { + "message": "Минимизирај као иконицу у системској траци" + }, + "enableMinToTrayDesc": { + "message": "Када минимизујете прозор, уместо тога покажите икону у системској траци." + }, + "enableMinToMenuBar": { + "message": "Смањи на траку менија" + }, + "enableMinToMenuBarDesc": { + "message": "Када минимизујете прозор, покажи икону у траци менија." + }, + "enableCloseToTray": { + "message": "Затваранје оставлја иконицу у системској траци" + }, + "enableCloseToTrayDesc": { + "message": "Када затворите прозор, уместо тога покажите икону у системској траци." + }, + "enableCloseToMenuBar": { + "message": "Затвори у траку менија" + }, + "enableCloseToMenuBarDesc": { + "message": "Када затворите прозор, покажите икону у траци менија." + }, + "enableTray": { + "message": "Омогући иконицу у системској траци" + }, + "enableTrayDesc": { + "message": "Увек прикажи иконицу на системској траци." + }, + "startToTray": { + "message": "Покрени као иконицу у системској траци" + }, + "startToTrayDesc": { + "message": "Када се апликација први пут покрене, прикажи је само као икону у системској траци." + }, + "startToMenuBar": { + "message": "Покрени у траци менија" + }, + "startToMenuBarDesc": { + "message": "Када се апликација први пут покрене, прикажи само икону у траци менија." + }, + "openAtLogin": { + "message": "Аутоматски покрени након пријављивања" + }, + "openAtLoginDesc": { + "message": "Покрени Bitwarden Desktop апликацију аутоматски након пријављивања." + }, + "alwaysShowDock": { + "message": "Увек покажи у Dock" + }, + "alwaysShowDockDesc": { + "message": "Покажи Bitwarden иконицу у Dock чак и када је умањен на траци менија." + }, + "confirmTrayTitle": { + "message": "Потврди онемогућавање траке" + }, + "confirmTrayDesc": { + "message": "Ако онемогућите ово подешавање сва остала подешавања везана за системску траку ће такође бити онемогућена." + }, + "language": { + "message": "Језик" + }, + "languageDesc": { + "message": "Промените језик који апликација користи. Потребно је поновно покретање." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Промени боје апликације." + }, + "dark": { + "message": "Тамна", + "description": "Dark color" + }, + "light": { + "message": "Светла", + "description": "Light color" + }, + "copy": { + "message": "Копирај", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Провери доступна ажурирања" + }, + "version": { + "message": "Верзија $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Поново покренути за ажурирање" + }, + "restartToUpdateDesc": { + "message": "Верзија $VERSION_NUM$ је спремна за инсталацију. Морате поново покренути апликацију да бисте довршили инсталацију. Да ли желите да поново покренете и ажурирате сада?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Ажурирање је доступно" + }, + "updateAvailableDesc": { + "message": "Пронађено је ажурирање. Да ли желите да га преузмете сада?" + }, + "restart": { + "message": "Поново покрени" + }, + "later": { + "message": "Касније" + }, + "noUpdatesAvailable": { + "message": "Тренутно нису доступна ажурирања. Користите најновију верзију." + }, + "updateError": { + "message": "Грешка при ажурирању" + }, + "unknown": { + "message": "Непознато" + }, + "copyUsername": { + "message": "Копирај име" + }, + "copyNumber": { + "message": "Копирај број", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Копирај сигурносни код", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Премијум чланство" + }, + "premiumManage": { + "message": "Управљање чланством" + }, + "premiumManageAlert": { + "message": "Можете управљати вашим чланством на bitwarden.com. Да ли желите да посетите веб сајт сада?" + }, + "premiumRefresh": { + "message": "Освежите чланство" + }, + "premiumNotCurrentMember": { + "message": "Тренутно нисте премијум члан." + }, + "premiumSignUpAndGet": { + "message": "Пријавите се за премијум чланство и добијте:" + }, + "premiumSignUpStorage": { + "message": "1ГБ шифровано складиште за прилоге." + }, + "premiumSignUpTwoStep": { + "message": "Додатне опције пријаве у два корака као што су YubiKey, FIDO U2F, и Duo." + }, + "premiumSignUpReports": { + "message": "Извештаји о хигијени лозинки, здравственом стању налога и кршењу података да бисте заштитили сеф." + }, + "premiumSignUpTotp": { + "message": "Генератор једнократног кода (2FA) за пријаве из сефа." + }, + "premiumSignUpSupport": { + "message": "Приоритетна корисничка подршка." + }, + "premiumSignUpFuture": { + "message": "Све будуће премијум функције. Више ускоро!" + }, + "premiumPurchase": { + "message": "Купити премијум" + }, + "premiumPurchaseAlert": { + "message": "Можете купити премијум претплату на bitwarden.com. Да ли желите да посетите веб сајт сада?" + }, + "premiumCurrentMember": { + "message": "Ви сте премијум члан!" + }, + "premiumCurrentMemberThanks": { + "message": "Хвала Вам за подршку Bitwarden-а." + }, + "premiumPrice": { + "message": "Све за само $PRICE$ годишње!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Освежавање је завршено" + }, + "passwordHistory": { + "message": "Историја Лозинке" + }, + "clear": { + "message": "Очисти", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Нема лозинки за приказивање." + }, + "undo": { + "message": "Опозови" + }, + "redo": { + "message": "Понови" + }, + "cut": { + "message": "Исеци", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Налепи", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Изабери све" + }, + "zoomIn": { + "message": "Увећање" + }, + "zoomOut": { + "message": "Умањење" + }, + "resetZoom": { + "message": "Ресетуј зумирање" + }, + "toggleFullScreen": { + "message": "Укључи/искључи приказ преко целог екрана" + }, + "reload": { + "message": "Поново учитај" + }, + "toggleDevTools": { + "message": "Укључи/искључи развојне алатке" + }, + "minimize": { + "message": "Минимизирај", + "description": "Minimize window" + }, + "zoom": { + "message": "Зумирај" + }, + "bringAllToFront": { + "message": "Постави све у предњи план", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "О Bitwarden" + }, + "services": { + "message": "Услуге" + }, + "hideBitwarden": { + "message": "Сакриј Bitwarden" + }, + "hideOthers": { + "message": "Сакриј остале" + }, + "showAll": { + "message": "Прикажи све" + }, + "quitBitwarden": { + "message": "Затвори Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ копиран(а/о)", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Помоћ" + }, + "window": { + "message": "Прозор" + }, + "checkPassword": { + "message": "Проверите да ли је лозинка изложена." + }, + "passwordExposed": { + "message": "Ова лозинка је изложена $VALUE$ пута. Требали би да је промените.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Ова лозинка није никада изложена. Треба да је сигурна за употребу." + }, + "baseDomain": { + "message": "Главни домен", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Име домена", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Хост", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Тачно" + }, + "startsWith": { + "message": "Почиње са" + }, + "regEx": { + "message": "Регуларни израз", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Налажење УРЛ", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Стандардно налажење вење", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Промена опција" + }, + "organization": { + "message": "Организација", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Подразумевано" + }, + "exit": { + "message": "Изађи" + }, + "showHide": { + "message": "Покажи/Сакриј", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Сакриј у системску траку" + }, + "alwaysOnTop": { + "message": "Увек на врху", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Промењено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Лозинка ажурирана", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Извоз сефа" + }, + "fileFormat": { + "message": "Формат датотеке" + }, + "warning": { + "message": "УПОЗОРЕЊЕ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Потврдите извоз сефа" + }, + "exportWarningDesc": { + "message": "Овај извоз садржи податке сефа у нешифрираном формату. Не бисте смели да сачувате или шаљете извезену датотеку преко несигурних канала (као што је имејл). Избришите датотеку одмах након што завршите са коришћењем." + }, + "encExportKeyWarningDesc": { + "message": "Овај извоз шифрује податке користећи кључ за шифровање вашег налога. Ако икада промените кључ за шифровање свог налога, требало би да поново извезете, јер нећете моћи да дешифрујете овај извоз." + }, + "encExportAccountWarningDesc": { + "message": "Кључеви за шифровање налога су јединствени за сваки Bitwarden кориснички налог, тако да не можете да увезете шифровани извоз на други налог." + }, + "noOrganizationsList": { + "message": "Не припадате ниједној организацији. Организације вам омогућавају да безбедно делите ставке са другим корисницима." + }, + "noCollectionsInList": { + "message": "Нема колекције у листи." + }, + "ownership": { + "message": "Власништво" + }, + "whoOwnsThisItem": { + "message": "Ко је власник ове ставке?" + }, + "strong": { + "message": "Јако", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Добро", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Слабо", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слаба Главна Лозинка" + }, + "weakMasterPasswordDesc": { + "message": "Главна лозинка коју сте одабрали је слаба. Требали бисте користити јаку главну лозинку (или фразу лозинке) да бисте правилно заштитили свој налог. Да ли сте сигурни да желите да користите ову главну лозинку?" + }, + "pin": { + "message": "ПИН", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Откључај са ПИН" + }, + "setYourPinCode": { + "message": "Поставите свој ПИН код за откључавање Bitwarden-а. Поставке ПИН-а ће се ресетовати ако се икада потпуно одјавите из апликације." + }, + "pinRequired": { + "message": "ПИН је обавезан." + }, + "invalidPin": { + "message": "Погрешан ПИН код." + }, + "unlockWithWindowsHello": { + "message": "Откључај са Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Потврди за Bitwarden." + }, + "unlockWithTouchId": { + "message": "Откључај са Touch ID" + }, + "touchIdConsentMessage": { + "message": "Откључај свој сеф" + }, + "noAutoPromptWindowsHello": { + "message": "Не тражи Windows Hello након покретања." + }, + "noAutoPromptTouchId": { + "message": "Не тражи Touch ID након покретања." + }, + "lockWithMasterPassOnRestart": { + "message": "Закључајте са главном лозинком при поновном покретању" + }, + "preferences": { + "message": "Подешавања" + }, + "enableMenuBar": { + "message": "Омогући икону траке менија" + }, + "enableMenuBarDesc": { + "message": "Увек покажи икону у траци менија." + }, + "hideToMenuBar": { + "message": "Сакриј у траку менија" + }, + "selectOneCollection": { + "message": "Морате одабрати макар једну колекцију." + }, + "premiumUpdated": { + "message": "Надоградили сте на премијум." + }, + "restore": { + "message": "Поврати" + }, + "premiumManageAlertAppStore": { + "message": "Претплатом можете управљати из App Store. Да ли желите да посетите App Store сада?" + }, + "legal": { + "message": "Правне информације", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Услови коришћења услуге" + }, + "privacyPolicy": { + "message": "Политика приватности" + }, + "unsavedChangesConfirmation": { + "message": "Јесте ли сигурни да желите да одете? Ако одете сада, ваше тренутне информације неће бити сачуване." + }, + "unsavedChangesTitle": { + "message": "Несачуване промене" + }, + "clone": { + "message": "Клонирај" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Једна или више смерница организације утичу на поставке вашег генератора." + }, + "vaultTimeoutAction": { + "message": "Акција на тајмаут сефа" + }, + "vaultTimeoutActionLockDesc": { + "message": "Закључани сеф захтева да поново унесете главну лозинку да бисте му поново приступили." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Одјављени сеф захтева да поново потврдите идентитет да бисте му поново приступили." + }, + "lock": { + "message": "Закључај", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Отпад", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Тражи отпад" + }, + "permanentlyDeleteItem": { + "message": "Трајно избрисати ставку" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Да ли сте сигурни да желите да трајно избришете ову ставку?" + }, + "permanentlyDeletedItem": { + "message": "Трајно избрисана ставка" + }, + "restoreItem": { + "message": "Врати ставку" + }, + "restoreItemConfirmation": { + "message": "Да ли сте сигурни да желите да вратите ову ставку?" + }, + "restoredItem": { + "message": "Ставка враћена" + }, + "permanentlyDelete": { + "message": "Трајно избрисати" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Одјава ће уклонити сваки приступ вашем сефу и захтева мрежну потврду идентитета након истека тајмаута. Да ли сте сигурни да желите да користите ову поставку?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Потврда акције истека времена" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Једна Пријава" + }, + "setMasterPassword": { + "message": "Постави Главну Лозинку" + }, + "ssoCompleteRegistration": { + "message": "Да бисте довршили пријављивање помоћу SSO, молимо да поставите главну лозинку за приступ и заштиту вашег сефа." + }, + "newMasterPass": { + "message": "Нова Главна Лозинка" + }, + "confirmNewMasterPass": { + "message": "Потрдити нову Главну Лозинку" + }, + "masterPasswordPolicyInEffect": { + "message": "Једна или више полиса организације захтевају да ваша главна лозинка испуни следеће захтеве:" + }, + "policyInEffectMinComplexity": { + "message": "Оцена минималне сложености од $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Минимална дужина од $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Садржи једно или више великих слова" + }, + "policyInEffectLowercase": { + "message": "Садржи једно или више малих слова" + }, + "policyInEffectNumbers": { + "message": "Садржи један или више бројева" + }, + "policyInEffectSpecial": { + "message": "Садржи један или више ових специјалних знакова $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Ваша нова главна лозинка не испуњава захтеве полисе." + }, + "acceptPolicies": { + "message": "Означавањем овог поља пристајете на следеће:" + }, + "acceptPoliciesError": { + "message": "Услови услуге и Политика приватности нису прихваћени." + }, + "enableBrowserIntegration": { + "message": "Укључи интеграцију са претраживачем" + }, + "enableBrowserIntegrationDesc": { + "message": "Интеграција прегледача се користи за биометрију у прегледачу." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Интеграција претраживача није подржана" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Нажалост, интеграција прегледача за сада је подржана само у верзији Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Интеграција претраживача није подржана" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Нажалост, интеграција прегледача није за сада подржана у Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Захтева верификацију за интеграцију прегледача" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Омогућите додатни ниво заштите захтевајући проверу фразе отиска прста приликом успостављања везе између desktop-а и прегледача. Када је омогућено, ово захтева интервенцију и верификацију корисника сваки пут када се успостави веза." + }, + "approve": { + "message": "Одобри" + }, + "verifyBrowserTitle": { + "message": "Провери везу прегледача" + }, + "verifyBrowserDesc": { + "message": "Уверите се да је приказани отисак идентичан отиску приказаном у додатку прегледача." + }, + "biometricsNotEnabledTitle": { + "message": "Биометрија није омогућена" + }, + "biometricsNotEnabledDesc": { + "message": "Биометрија прегледача захтева да у поставкама прво буде омогућена биометрија desktop-а." + }, + "personalOwnershipSubmitError": { + "message": "Због смерница за предузећа, ограничено вам је чување предмета у вашем личном трезору. Промените опцију власништва у организацију и изаберите из доступних колекција." + }, + "hintEqualsPassword": { + "message": "Ваш савет за лозинку не може да буде исти као лозинка." + }, + "personalOwnershipPolicyInEffect": { + "message": "Политика организације утиче на ваше могућности власништва." + }, + "allSends": { + "message": "Сва слања", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Датотека" + }, + "sendTypeText": { + "message": "Текст" + }, + "searchSends": { + "message": "Претражи слања", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Уреди слање", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Мој сеф" + }, + "text": { + "message": "Текст" + }, + "deletionDate": { + "message": "Брисање после" + }, + "deletionDateDesc": { + "message": "Слање ће бити трајно обрисано у наведени датум и време.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Рок употребе" + }, + "expirationDateDesc": { + "message": "Ако је подешено, приступ овом слању истиче у наведени датум и време.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Максималан број приступа" + }, + "maxAccessCountDesc": { + "message": "Ако је постављено, корисници више неће моћи да приступе овом „Send“ када се достигне максимални број приступа.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Тренутни број приступа" + }, + "disableSend": { + "message": "Онемогући ово слање да нико други нема приступ.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Опционо захтевај лозинку од корисника за приступ овом слању.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Приватне белешке о овом слању.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Линк слања", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Линк слања", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Када се приступа слању, подразумевано сакриј текст", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Креирано слање", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Измењено слање", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Обрисано слање", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Нова лозинка" + }, + "whatTypeOfSend": { + "message": "Који је ово тип „Send“-a?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Креирај слање", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст који желиш да пошаљеш." + }, + "sendFileDesc": { + "message": "Датотека коју желиш да пошаљеш." + }, + "days": { + "message": "$DAYS$ дана", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 дан" + }, + "custom": { + "message": "Друго" + }, + "deleteSendConfirmation": { + "message": "Сигурно обрисати ово слање?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Копирај везу слања у привремену меморију", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Копирај линк за дељење слања у привремену меморију након чувања." + }, + "sendDisabled": { + "message": "Слање онемогућено", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Због полисе компаније, можеш само да бришеш постојећа слања.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Копирај везу" + }, + "disabled": { + "message": "Онемогућено" + }, + "maxAccessCountReached": { + "message": "Достигнут максималан број приступа" + }, + "expired": { + "message": "Истекло" + }, + "pendingDeletion": { + "message": "Брисање на чекању" + }, + "webAuthnAuthenticate": { + "message": "WebAutn аутентификација" + }, + "hideEmail": { + "message": "Сакриј моју е-адресу од примаоца." + }, + "sendOptionsPolicyInEffect": { + "message": "Једна или више смерница организације утичу на опције „Send“-а." + }, + "emailVerificationRequired": { + "message": "Потребна је верификација е-поште" + }, + "emailVerificationRequiredDesc": { + "message": "Морате да проверите е-пошту да бисте користили ову функцију." + }, + "passwordPrompt": { + "message": "Поновно тражење главне лозинке" + }, + "passwordConfirmation": { + "message": "Потврда главне лозинке" + }, + "passwordConfirmationDesc": { + "message": "Ова акција је заштићена. Да бисте наставили, поново унесите своју главну лозинку да бисте проверили идентитет." + }, + "updatedMasterPassword": { + "message": "Главна лозинка ажурирана" + }, + "updateMasterPassword": { + "message": "Ажурирај главну лозинку" + }, + "updateMasterPasswordWarning": { + "message": "Ваша главна лозинка је недавно промењена од стране администратора организације. Како бисте приступили сефу, морате да је ажурирате. Ако наставите бићете одјављени из ваше тренутне сесије, што ће захтевати да се поново пријавите. Активне сесије на другим уређајима ће можда наставити да раде до сат времена." + }, + "hours": { + "message": "Сата" + }, + "minutes": { + "message": "Минута" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Полиса ваше организације утиче на време истека сефа. Максимално дозвољено време истека је $HOURS$ сат(и) и $MINUTES$ minut(а)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Време истека вашег сефа је премашило дозвољена ограничења од стране ваше организације." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Аутоматска пријава" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ова организација има полису која ће вас аутоматски пријавити за ресетовање лозинке. Пријава ће дозволити администраторима ваше организације да промене главну лозинку." + }, + "vaultExportDisabled": { + "message": "Извоз сефа онемогућен" + }, + "personalVaultExportPolicyInEffect": { + "message": "Једна или више полиса ваше организације вас спречава да извезете ваш сеф." + }, + "addAccount": { + "message": "Додај налог" + }, + "removeMasterPassword": { + "message": "Уклони главну лозинку" + }, + "removedMasterPassword": { + "message": "Главна лозинка уклоњена." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ користи SSO уз сопствени сервер за кључеве. Главна лозинка за пријаву више није неопходна за чланове ове организације.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Напусти организацију" + }, + "leaveOrganizationConfirmation": { + "message": "Да ли Сте сигурни да желите да напустите ову организацију?" + }, + "leftOrganization": { + "message": "Напустили сте организацију." + }, + "ssoKeyConnectorUnavailable": { + "message": "Немогуће повезати се са добављачем кључева, покушајте поново касније." + }, + "lockAllVaults": { + "message": "Закључај сефове" + }, + "accountLimitReached": { + "message": "Истовремено се не може пријавити више од 5 налога." + }, + "accountPreferences": { + "message": "Подешавања" + }, + "appPreferences": { + "message": "Подешавања апликације (Сви налози)" + }, + "accountSwitcherLimitReached": { + "message": "Граница налога достигнута. Одјавите се од једног налога да би додали други." + }, + "settingsTitle": { + "message": "Подешавања апликације за $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Промени налог" + }, + "options": { + "message": "Опције" + }, + "sessionTimeout": { + "message": "Ваша сесија је истекла. Вратите се и покушајте поново да се пријавите." + }, + "exportingPersonalVaultTitle": { + "message": "Извоз личног сефа" + }, + "exportingPersonalVaultDescription": { + "message": "Само предмети личног сефа повезани са $EMAIL$ биће извезени. Ставке организационог сефа неће бити укључене.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Шта желите да генеришете?" + }, + "passwordType": { + "message": "Тип лозинке" + }, + "regenerateUsername": { + "message": "Поново генериши име" + }, + "generateUsername": { + "message": "Генериши име" + }, + "usernameType": { + "message": "Тип имена" + }, + "plusAddressedEmail": { + "message": "Плус имејл адресе" + }, + "plusAddressedEmailDesc": { + "message": "Користите могућности подадресирања вашег добављача е-поште." + }, + "catchallEmail": { + "message": "„Ухвати све“ е-порука" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Случајно" + }, + "randomWord": { + "message": "Случајна реч" + }, + "websiteName": { + "message": "Име Вашег веб-сајта" + }, + "service": { + "message": "Сервис" + } +} diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json new file mode 100644 index 0000000000..5f2c837f62 --- /dev/null +++ b/apps/desktop/src/locales/sv/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filter" + }, + "allItems": { + "message": "Alla objekt" + }, + "favorites": { + "message": "Favoriter" + }, + "types": { + "message": "Typer" + }, + "typeLogin": { + "message": "Inloggning" + }, + "typeCard": { + "message": "Kort" + }, + "typeIdentity": { + "message": "Identitet" + }, + "typeSecureNote": { + "message": "Säker anteckning" + }, + "folders": { + "message": "Mappar" + }, + "collections": { + "message": "Samlingar" + }, + "searchVault": { + "message": "Sök i valvet" + }, + "addItem": { + "message": "Lägg till objekt" + }, + "shared": { + "message": "Delad" + }, + "share": { + "message": "Dela" + }, + "moveToOrganization": { + "message": "Flytta till organisation" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ flyttades till $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Välj en organisation som du vill flytta detta objektet till. Flytt till en organisation överför ägandet av objektet till den organisationen. Du kommer inte längre att vara direkt ägare till detta objekt när det har flyttats." + }, + "attachments": { + "message": "Bilagor" + }, + "viewItem": { + "message": "Visa objekt" + }, + "name": { + "message": "Namn" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Ny URI" + }, + "username": { + "message": "Användarnamn" + }, + "password": { + "message": "Lösenord" + }, + "passphrase": { + "message": "Lösenordsfras" + }, + "editItem": { + "message": "Redigera objekt" + }, + "emailAddress": { + "message": "E-postadress" + }, + "verificationCodeTotp": { + "message": "Verifieringskod (TOTP)" + }, + "website": { + "message": "Webbplats" + }, + "notes": { + "message": "Anteckningar" + }, + "customFields": { + "message": "Anpassade fält" + }, + "launch": { + "message": "Öppna" + }, + "copyValue": { + "message": "Kopiera värde", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimera vid kopiering till urklipp" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimera när ett objekt kopieras till urklipp." + }, + "toggleVisibility": { + "message": "Växla synlighet" + }, + "toggleCollapse": { + "message": "Växla synlig/dold", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kortinnehavarens namn" + }, + "number": { + "message": "Nummer" + }, + "brand": { + "message": "Märke" + }, + "expiration": { + "message": "Utgång" + }, + "securityCode": { + "message": "Säkerhetskod" + }, + "identityName": { + "message": "Identitetsnamn" + }, + "company": { + "message": "Företag" + }, + "ssn": { + "message": "Personnummer" + }, + "passportNumber": { + "message": "Passnummer" + }, + "licenseNumber": { + "message": "Körkortsnummer" + }, + "email": { + "message": "E-post" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adress" + }, + "premiumRequired": { + "message": "Premium krävs" + }, + "premiumRequiredDesc": { + "message": "Ett premium-medlemskap krävs för att använda den här funktionen." + }, + "errorOccurred": { + "message": "Ett fel har inträffat." + }, + "error": { + "message": "Fel" + }, + "january": { + "message": "Januari" + }, + "february": { + "message": "Februari" + }, + "march": { + "message": "Mars" + }, + "april": { + "message": "April" + }, + "may": { + "message": "Maj" + }, + "june": { + "message": "Juni" + }, + "july": { + "message": "Juli" + }, + "august": { + "message": "Augusti" + }, + "september": { + "message": "September" + }, + "october": { + "message": "Oktober" + }, + "november": { + "message": "November" + }, + "december": { + "message": "December" + }, + "ex": { + "message": "t.ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Titel" + }, + "mr": { + "message": "Herr" + }, + "mrs": { + "message": "Fru" + }, + "ms": { + "message": "Fröken" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Utgångsmånad" + }, + "expirationYear": { + "message": "Utgångsår" + }, + "select": { + "message": "Välj" + }, + "other": { + "message": "Annat" + }, + "generatePassword": { + "message": "Skapa lösenord" + }, + "type": { + "message": "Typ" + }, + "firstName": { + "message": "Förnamn" + }, + "middleName": { + "message": "Mellannamn" + }, + "lastName": { + "message": "Efternamn" + }, + "fullName": { + "message": "Fullständigt namn" + }, + "address1": { + "message": "Adress 1" + }, + "address2": { + "message": "Adress 2" + }, + "address3": { + "message": "Adress 3" + }, + "cityTown": { + "message": "Ort" + }, + "stateProvince": { + "message": "Län" + }, + "zipPostalCode": { + "message": "Postnummer" + }, + "country": { + "message": "Land" + }, + "save": { + "message": "Spara" + }, + "cancel": { + "message": "Avbryt" + }, + "delete": { + "message": "Radera" + }, + "favorite": { + "message": "Favorit" + }, + "edit": { + "message": "Redigera" + }, + "authenticatorKeyTotp": { + "message": "Autentiseringsnyckel (TOTP)" + }, + "folder": { + "message": "Mapp" + }, + "newCustomField": { + "message": "Nytt anpassat fält" + }, + "value": { + "message": "Värde" + }, + "dragToSort": { + "message": "Dra för att sortera" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "Dold" + }, + "cfTypeBoolean": { + "message": "Booleskt värde" + }, + "cfTypeLinked": { + "message": "Länkad", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Länkat värde", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Ta bort" + }, + "nameRequired": { + "message": "Namn krävs." + }, + "addedItem": { + "message": "Lade till objekt" + }, + "editedItem": { + "message": "Redigerade objekt" + }, + "deleteItem": { + "message": "Radera objekt" + }, + "deleteFolder": { + "message": "Radera mapp" + }, + "deleteAttachment": { + "message": "Radera bilaga" + }, + "deleteItemConfirmation": { + "message": "Är du säker på att du vill radera detta objekt?" + }, + "deletedItem": { + "message": "Skickade objekt till papperskorgen" + }, + "overwritePasswordConfirmation": { + "message": "Är du säker på att du vill skriva över det nuvarande lösenordet?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Ingen mapp", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Lägg till mapp" + }, + "editFolder": { + "message": "Redigera mapp" + }, + "regeneratePassword": { + "message": "Skapa nytt lösenord" + }, + "copyPassword": { + "message": "Kopiera lösenord" + }, + "copyUri": { + "message": "Kopiera URI" + }, + "copyVerificationCodeTotp": { + "message": "Kopiera verifieringskod (TOTP)" + }, + "length": { + "message": "Längd" + }, + "numWords": { + "message": "Antal ord" + }, + "wordSeparator": { + "message": "Ordavgränsare" + }, + "capitalize": { + "message": "Versalisera", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Inkludera siffra" + }, + "close": { + "message": "Stäng" + }, + "minNumbers": { + "message": "Minsta antal siffror" + }, + "minSpecial": { + "message": "Minsta antal speciella tecken", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Undvik tvetydiga tecken" + }, + "searchCollection": { + "message": "Sök i samling" + }, + "searchFolder": { + "message": "Sök i mapp" + }, + "searchFavorites": { + "message": "Sök i favoriter" + }, + "searchType": { + "message": "Sök efter typ", + "description": "Search item type" + }, + "newAttachment": { + "message": "Lägg till ny bilaga" + }, + "deletedAttachment": { + "message": "Raderade bilaga" + }, + "deleteAttachmentConfirmation": { + "message": "Är du säker på att du vill radera denna bilaga?" + }, + "attachmentSaved": { + "message": "Bilagan har sparats." + }, + "file": { + "message": "Fil" + }, + "selectFile": { + "message": "Välj en fil." + }, + "maxFileSize": { + "message": "Maximal filstorlek är 500 MB." + }, + "updateKey": { + "message": "Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel." + }, + "editedFolder": { + "message": "Redigerade mapp" + }, + "addedFolder": { + "message": "Lade till mapp" + }, + "deleteFolderConfirmation": { + "message": "Är du säker på att du vill radera denna mapp?" + }, + "deletedFolder": { + "message": "Raderade mapp" + }, + "loginOrCreateNewAccount": { + "message": "Logga in eller skapa ett nytt konto för att komma åt ditt valv." + }, + "createAccount": { + "message": "Skapa konto" + }, + "logIn": { + "message": "Logga in" + }, + "submit": { + "message": "Skicka" + }, + "masterPass": { + "message": "Huvudlösenord" + }, + "masterPassDesc": { + "message": "Huvudlösenordet är det lösenord som du använder för att komma åt ditt valv. Det är väldigt viktigt att du inte glömmer bort ditt huvudlösenord, eftersom det inte går att återställa lösenordet ifall du skulle glömma bort det." + }, + "masterPassHintDesc": { + "message": "En huvudlösenordsledtråd kan hjälpa dig att komma ihåg ditt lösenord om du glömmer bort det." + }, + "reTypeMasterPass": { + "message": "Ange huvudlösenordet igen" + }, + "masterPassHint": { + "message": "Huvudlösenordsledtråd (valfri)" + }, + "settings": { + "message": "Inställningar" + }, + "passwordHint": { + "message": "Lösenordsledtråd" + }, + "enterEmailToGetHint": { + "message": "Ange din e-postadress för att få din huvudlösenordsledtråd skickad till dig." + }, + "getMasterPasswordHint": { + "message": "Hämta huvudlösenordsledtråd" + }, + "emailRequired": { + "message": "E-postadress krävs." + }, + "invalidEmail": { + "message": "Ogiltig e-postadress." + }, + "masterPassRequired": { + "message": "Huvudlösenord krävs." + }, + "masterPassLength": { + "message": "Huvudlösenordet måste vara minst 8 tecken långt." + }, + "masterPassDoesntMatch": { + "message": "Huvudlösenorden stämmer inte överens." + }, + "newAccountCreated": { + "message": "Ditt nya konto har skapats! Du kan nu logga in." + }, + "masterPassSent": { + "message": "Vi har skickat ett e-postmeddelande till dig med din huvudlösenordsledtråd." + }, + "unexpectedError": { + "message": "Ett oväntat fel har inträffat." + }, + "itemInformation": { + "message": "Objektinformation" + }, + "noItemsInList": { + "message": "Det finns inga objekt att visa." + }, + "sendVerificationCode": { + "message": "Skicka en verifieringskod till din e-postadress" + }, + "sendCode": { + "message": "Skicka kod" + }, + "codeSent": { + "message": "Kod har skickats" + }, + "verificationCode": { + "message": "Verifieringskod" + }, + "confirmIdentity": { + "message": "Bekräfta din identitet för att fortsätta." + }, + "verificationCodeRequired": { + "message": "Verifieringskod krävs." + }, + "invalidVerificationCode": { + "message": "Ogiltig verifieringskod" + }, + "continue": { + "message": "Fortsätt" + }, + "enterVerificationCodeApp": { + "message": "Ange den 6-siffriga verifieringskoden från din autentiseringsapp." + }, + "enterVerificationCodeEmail": { + "message": "Ange den 6-siffriga verifieringskoden som har skickats till $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verifieringsmeddelande har skickats till $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Kom ihåg mig" + }, + "sendVerificationCodeEmailAgain": { + "message": "Skicka e-postmeddelandet med verifieringskoden igen" + }, + "useAnotherTwoStepMethod": { + "message": "Använd en annan metod för tvåstegsverifiering" + }, + "insertYubiKey": { + "message": "Anslut din YubiKey till datorns USB-port och tryck sedan på dess knapp." + }, + "insertU2f": { + "message": "Anslut din säkerhetsnyckel till datorns USB-port. Om den har en knapp, tryck på den." + }, + "recoveryCodeDesc": { + "message": "Förlorat åtkomst till alla dina metoder för tvåstegsverifiering? Använd din återställningskod för att inaktivera tvåstegsverifiering på ditt konto." + }, + "recoveryCodeTitle": { + "message": "Återställningskod" + }, + "authenticatorAppTitle": { + "message": "Autentiseringsapp" + }, + "authenticatorAppDesc": { + "message": "Använd en autentiseringsapp (t.ex. Authy eller Google Authenticator) för att skapa tidsbaserade verifieringskoder.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP-säkerhetsnyckel" + }, + "yubiKeyDesc": { + "message": "Använd en YubiKey för att komma åt ditt konto. Fungerar med YubiKey 4, 4 Nano, 4C och NEO-enheter." + }, + "duoDesc": { + "message": "Verifiera med Duo Security genom att använda Duo Mobile-appen, SMS, telefonsamtal eller en U2F-säkerhetsnyckel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verifiera med Duo Security för din organisation genom att använda Duo Mobile-appen, SMS, telefonsamtal eller en U2F-säkerhetsnyckel.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Använd en WebAuthn-aktiverad säkerhetsnyckel för att komma åt ditt konto." + }, + "emailTitle": { + "message": "E-post" + }, + "emailDesc": { + "message": "Verifieringskoder kommer att skickas till dig via e-post." + }, + "loginUnavailable": { + "message": "Inloggning ej tillgänglig" + }, + "noTwoStepProviders": { + "message": "Detta konto har tvåstegsverifiering aktiverat, men ingen av de konfigurerade metoderna stöds av den här enheten." + }, + "noTwoStepProviders2": { + "message": "Lägg till fler metoder som har bättre stöd bland enheter (t.ex. en autentiseringsapp)." + }, + "twoStepOptions": { + "message": "Alternativ för tvåstegsverifiering" + }, + "selfHostedEnvironment": { + "message": "Egen-hostad miljö" + }, + "selfHostedEnvironmentFooter": { + "message": "Ange bas-URL:en för din \"on-premises\"-hostade Bitwarden-installation." + }, + "customEnvironment": { + "message": "Anpassad miljö" + }, + "customEnvironmentFooter": { + "message": "För avancerade användare. Du kan ange bas-URL:en för varje tjänst oberoende av varandra." + }, + "baseUrl": { + "message": "Server-URL" + }, + "apiUrl": { + "message": "API-server-URL" + }, + "webVaultUrl": { + "message": "Webbvalvsserver-URL" + }, + "identityUrl": { + "message": "Identitetsserver-URL" + }, + "notificationsUrl": { + "message": "Aviseringsserver-URL" + }, + "iconsUrl": { + "message": "Ikonserver-URL" + }, + "environmentSaved": { + "message": "Miljö-URL:erna har sparats." + }, + "ok": { + "message": "OK" + }, + "yes": { + "message": "Ja" + }, + "no": { + "message": "Nej" + }, + "overwritePassword": { + "message": "Skriv över lösenord" + }, + "learnMore": { + "message": "Läs mer" + }, + "featureUnavailable": { + "message": "Funktion ej tillgänglig" + }, + "loggedOut": { + "message": "Utloggad" + }, + "loginExpired": { + "message": "Din inloggningssession har löpt ut." + }, + "logOutConfirmation": { + "message": "Är du säker på att du vill logga ut?" + }, + "logOut": { + "message": "Logga ut" + }, + "addNewLogin": { + "message": "Lägg till ny inloggning" + }, + "addNewItem": { + "message": "Lägg till nytt objekt" + }, + "addNewFolder": { + "message": "Lägg till ny mapp" + }, + "view": { + "message": "Visa" + }, + "account": { + "message": "Konto" + }, + "loading": { + "message": "Laddar..." + }, + "lockVault": { + "message": "Lås valv" + }, + "passwordGenerator": { + "message": "Lösenordsgenerator" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Skicka en felrapport" + }, + "blog": { + "message": "Blogg" + }, + "followUs": { + "message": "Följ oss" + }, + "syncVault": { + "message": "Synkronisera valv" + }, + "changeMasterPass": { + "message": "Ändra huvudlösenord" + }, + "changeMasterPasswordConfirmation": { + "message": "Du kan ändra ditt huvudlösenord i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" + }, + "fingerprintPhrase": { + "message": "Fingeravtrycksfras", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Ditt kontos fingeravtrycksfras", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Gå till webbvalv" + }, + "getMobileApp": { + "message": "Hämta mobilapp" + }, + "getBrowserExtension": { + "message": "Hämta webbläsartillägg" + }, + "syncingComplete": { + "message": "Synkroniseringen slutfördes" + }, + "syncingFailed": { + "message": "Synkroniseringen misslyckades" + }, + "yourVaultIsLocked": { + "message": "Ditt valv är låst. Bekräfta din identitet för att fortsätta." + }, + "unlock": { + "message": "Lås upp" + }, + "loggedInAsOn": { + "message": "Inloggad som $EMAIL$ på $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Ogiltigt huvudlösenord" + }, + "twoStepLoginConfirmation": { + "message": "Tvåstegsverifiering gör ditt konto säkrare genom att kräva att du verifierar din inloggning med en annan enhet, t.ex. en säkerhetsnyckel, autentiseringsapp, SMS, telefonsamtal eller e-post. Tvåstegsverifiering kan aktiveras i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" + }, + "twoStepLogin": { + "message": "Tvåstegsverifiering" + }, + "vaultTimeout": { + "message": "Valvets tidsgräns" + }, + "vaultTimeoutDesc": { + "message": "Välj när valvets tidsgräns överskrids och den valda åtgärden utförs." + }, + "immediately": { + "message": "Omedelbart" + }, + "tenSeconds": { + "message": "10 sekunder" + }, + "twentySeconds": { + "message": "20 sekunder" + }, + "thirtySeconds": { + "message": "30 sekunder" + }, + "oneMinute": { + "message": "1 minut" + }, + "twoMinutes": { + "message": "2 minuter" + }, + "fiveMinutes": { + "message": "5 minuter" + }, + "fifteenMinutes": { + "message": "15 minuter" + }, + "thirtyMinutes": { + "message": "30 minuter" + }, + "oneHour": { + "message": "1 timme" + }, + "fourHours": { + "message": "4 timmar" + }, + "onIdle": { + "message": "Vid inaktivitet" + }, + "onSleep": { + "message": "Vid strömsparläge" + }, + "onLocked": { + "message": "Vid låsning av datorn" + }, + "onRestart": { + "message": "Vid omstart" + }, + "never": { + "message": "Aldrig" + }, + "security": { + "message": "Säkerhet" + }, + "clearClipboard": { + "message": "Rensa urklipp", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Rensa automatiskt kopierade värden från urklipp.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Inaktivera webbplatsikoner" + }, + "disableFaviconDesc": { + "message": "Webbplatsikoner ger en igenkännbar ikon bredvid varje inloggningsobjekt i ditt valv." + }, + "enableMinToTray": { + "message": "Minimera till systemfältsikon" + }, + "enableMinToTrayDesc": { + "message": "När fönstret minimeras, visa en ikon i systemfältet istället." + }, + "enableMinToMenuBar": { + "message": "Minimera till aktivitetsfältet" + }, + "enableMinToMenuBarDesc": { + "message": "När fönstret minimeras, visa en ikon i aktivitetsfältet istället." + }, + "enableCloseToTray": { + "message": "Stäng till systemfältet" + }, + "enableCloseToTrayDesc": { + "message": "När fönstret stängs, visa en ikon i systemfältet istället." + }, + "enableCloseToMenuBar": { + "message": "Stäng till aktivitetsfältet" + }, + "enableCloseToMenuBarDesc": { + "message": "När fönstret stängs, visa en ikon i aktivitetsfältet istället." + }, + "enableTray": { + "message": "Aktivera systemfältsikon" + }, + "enableTrayDesc": { + "message": "Visa alltid en ikon i systemfältet." + }, + "startToTray": { + "message": "Starta i systemfältet" + }, + "startToTrayDesc": { + "message": "När programmet startas, visa endast en ikon i systemfältet." + }, + "startToMenuBar": { + "message": "Öppna till aktivitetsfältet" + }, + "startToMenuBarDesc": { + "message": "När programmet startas, visa endast en ikon i aktivitetsfältet." + }, + "openAtLogin": { + "message": "Starta automatiskt vid inloggning" + }, + "openAtLoginDesc": { + "message": "Starta Bitwardens skrivbordsprogram automatiskt vid inloggning." + }, + "alwaysShowDock": { + "message": "Visa alltid i dockan" + }, + "alwaysShowDockDesc": { + "message": "Visa Bitwarden-ikonen i dockan även om den minimeras till aktivitetsfältet." + }, + "confirmTrayTitle": { + "message": "Bekräfta inaktivering av fält" + }, + "confirmTrayDesc": { + "message": "Om den här inställningen inaktiveras kommer alla andra fältrelaterade inställningar också inaktiveras." + }, + "language": { + "message": "Språk" + }, + "languageDesc": { + "message": "Ändra språket som används i programmet. Omstart krävs." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Ändra programmets färgtema." + }, + "dark": { + "message": "Mörkt", + "description": "Dark color" + }, + "light": { + "message": "Ljust", + "description": "Light color" + }, + "copy": { + "message": "Kopiera", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Sök efter uppdateringar" + }, + "version": { + "message": "Version $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Starta om för att uppdatera" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ är redo att installeras. Du måste starta om programmet för att slutföra installationen. Vill du starta om och uppdatera nu?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Uppdatering tillgänglig" + }, + "updateAvailableDesc": { + "message": "En uppdatering hittades. Vill du hämta den nu?" + }, + "restart": { + "message": "Starta om" + }, + "later": { + "message": "Senare" + }, + "noUpdatesAvailable": { + "message": "Inga uppdateringar tillgängliga. Du använder den senaste versionen." + }, + "updateError": { + "message": "Fel vid uppdatering" + }, + "unknown": { + "message": "Okänd" + }, + "copyUsername": { + "message": "Kopiera användarnamn" + }, + "copyNumber": { + "message": "Kopiera nummer", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Kopiera säkerhetskod", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium-medlemskap" + }, + "premiumManage": { + "message": "Hantera medlemskap" + }, + "premiumManageAlert": { + "message": "Du kan hantera ditt medlemskap i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" + }, + "premiumRefresh": { + "message": "Uppdatera medlemskap" + }, + "premiumNotCurrentMember": { + "message": "Du är för närvarande inte en premium-medlem." + }, + "premiumSignUpAndGet": { + "message": "Registrera dig för ett premium-medlemskap och få:" + }, + "premiumSignUpStorage": { + "message": "1 GB krypterad lagring." + }, + "premiumSignUpTwoStep": { + "message": "Ytterligare alternativ för tvåstegsverifiering såsom YubiKey, FIDO U2F och Duo." + }, + "premiumSignUpReports": { + "message": "Lösenordshygien, kontohälsa och dataintrångsrapporter för att skydda ditt valv." + }, + "premiumSignUpTotp": { + "message": "TOTP-verifieringskodgenerator (2FA) för inloggningar i ditt valv." + }, + "premiumSignUpSupport": { + "message": "Prioriterad kundservice." + }, + "premiumSignUpFuture": { + "message": "Alla framtida premium-funktioner. Mer kommer snart!" + }, + "premiumPurchase": { + "message": "Köp premium" + }, + "premiumPurchaseAlert": { + "message": "Du kan köpa premium-medlemskap i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" + }, + "premiumCurrentMember": { + "message": "Du är en premium-medlem!" + }, + "premiumCurrentMemberThanks": { + "message": "Tack för att du stödjer Bitwarden." + }, + "premiumPrice": { + "message": "Allt för endast $PRICE$/år!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Uppdateringen slutfördes" + }, + "passwordHistory": { + "message": "Lösenordshistorik" + }, + "clear": { + "message": "Rensa", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Det finns inga lösenord att visa." + }, + "undo": { + "message": "Ångra" + }, + "redo": { + "message": "Gör om" + }, + "cut": { + "message": "Klipp ut", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Klistra in", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Markera alla" + }, + "zoomIn": { + "message": "Zooma in" + }, + "zoomOut": { + "message": "Zooma ut" + }, + "resetZoom": { + "message": "Återställ zoom" + }, + "toggleFullScreen": { + "message": "Växla helskärm" + }, + "reload": { + "message": "Ladda om" + }, + "toggleDevTools": { + "message": "Växla utvecklingsverktyg" + }, + "minimize": { + "message": "Minimera", + "description": "Minimize window" + }, + "zoom": { + "message": "Zooma" + }, + "bringAllToFront": { + "message": "Lägg alla överst", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Om Bitwarden" + }, + "services": { + "message": "Tjänster" + }, + "hideBitwarden": { + "message": "Dölj Bitwarden" + }, + "hideOthers": { + "message": "Dölj övriga" + }, + "showAll": { + "message": "Visa alla" + }, + "quitBitwarden": { + "message": "Avsluta Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ kopierades", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Hjälp" + }, + "window": { + "message": "Fönster" + }, + "checkPassword": { + "message": "Kontrollera om lösenordet har avslöjats." + }, + "passwordExposed": { + "message": "Detta lösenord har avslöjats $VALUE$ gång(er) i dataintrång. Du bör ändra det.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Detta lösenord hittades inte i några kända dataintrång. Det bör vara säkert att använda." + }, + "baseDomain": { + "message": "Basdomän", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domännamn", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Värd", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exakt" + }, + "startsWith": { + "message": "Börjar med" + }, + "regEx": { + "message": "Reguljärt uttryck", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Matchning", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Standardmatchning", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Växla alternativ" + }, + "organization": { + "message": "Organisation", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Standard" + }, + "exit": { + "message": "Avsluta" + }, + "showHide": { + "message": "Visa / Dölj", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Minimera till systemfältet" + }, + "alwaysOnTop": { + "message": "Alltid överst", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Uppdaterades", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Lösenordet uppdaterades", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Exportera valv" + }, + "fileFormat": { + "message": "Filformat" + }, + "warning": { + "message": "VARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Bekräfta export av valv" + }, + "exportWarningDesc": { + "message": "Denna export innehåller ditt valv i ett okrypterat format. Du bör inte lagra eller skicka den exporterade filen över osäkra kanaler (t.ex. e-post). Radera den omedelbart när du är färdig med den." + }, + "encExportKeyWarningDesc": { + "message": "Denna export krypterar dina data med kontots krypteringsnyckel. Om du någonsin roterar kontots krypteringsnyckel bör du exportera igen eftersom du inte kommer att kunna dekryptera denna exportfil." + }, + "encExportAccountWarningDesc": { + "message": "Kypteringsnycklar är unika för varje Bitwarden-konto, så du kan inte importera en krypterad export till ett annat konto." + }, + "noOrganizationsList": { + "message": "Du tillhör inte några organisationer. Organisationer möjliggör säker delning av objekt med andra användare." + }, + "noCollectionsInList": { + "message": "Det finns inga samlingar att visa." + }, + "ownership": { + "message": "Ägarskap" + }, + "whoOwnsThisItem": { + "message": "Vem äger detta objekt?" + }, + "strong": { + "message": "Starkt", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Bra", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Svagt", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Svagt huvudlösenord" + }, + "weakMasterPasswordDesc": { + "message": "Huvudlösenordet du har valt är svagt. Du bör använda ett starkt huvudlösenord (eller en lösenordsfras) för att skydda ditt Bitwarden-konto ordentligt. Är du säker på att du vill använda detta huvudlösenord?" + }, + "pin": { + "message": "PIN-kod", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Lås upp med PIN-kod" + }, + "setYourPinCode": { + "message": "Ange en PIN-kod att låsa upp Bitwarden med. Dina PIN-kodsinställningar återställs om du någonsin loggar ut helt från programmet." + }, + "pinRequired": { + "message": "PIN-kod krävs." + }, + "invalidPin": { + "message": "Ogiltig PIN-kod." + }, + "unlockWithWindowsHello": { + "message": "Lås upp med Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Bekräfta för Bitwarden." + }, + "unlockWithTouchId": { + "message": "Lås upp med Touch ID" + }, + "touchIdConsentMessage": { + "message": "lås upp ditt valv" + }, + "noAutoPromptWindowsHello": { + "message": "Fråga inte efter Windows Hello vid uppstart." + }, + "noAutoPromptTouchId": { + "message": "Fråga inte efter Touch-ID vid uppstart." + }, + "lockWithMasterPassOnRestart": { + "message": "Lås med huvudlösenordet vid omstart" + }, + "preferences": { + "message": "Inställningar" + }, + "enableMenuBar": { + "message": "Aktivera aktivitetsfältsikon" + }, + "enableMenuBarDesc": { + "message": "Visa alltid en ikon i aktivitetsfältet." + }, + "hideToMenuBar": { + "message": "Minimera till aktivitetsfältet" + }, + "selectOneCollection": { + "message": "Du måste markera minst en samling." + }, + "premiumUpdated": { + "message": "Du har uppgraderat till premium." + }, + "restore": { + "message": "Återställ" + }, + "premiumManageAlertAppStore": { + "message": "Du kan hantera ditt abonnemang i App Store. Vill du besöka App Store nu?" + }, + "legal": { + "message": "Juridiskt", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Användarvillkor" + }, + "privacyPolicy": { + "message": "Integritetspolicy" + }, + "unsavedChangesConfirmation": { + "message": "Är du säker på att du vill lämna? Om du lämnar kommer din nuvarande information inte att sparas." + }, + "unsavedChangesTitle": { + "message": "Ändringar som inte sparats" + }, + "clone": { + "message": "Klona" + }, + "passwordGeneratorPolicyInEffect": { + "message": "En eller flera organisationspolicyer påverkar dina generatorinställningar." + }, + "vaultTimeoutAction": { + "message": "Åtgärd när valvets tidsgräns överskrids" + }, + "vaultTimeoutActionLockDesc": { + "message": "Ett låst valv kräver att du anger ditt huvudlösenord för att komma åt det igen." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Ett utloggat valv kräver att du autentiserar för att komma åt det igen." + }, + "lock": { + "message": "Lås", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Papperskorgen", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Sök i papperskorgen" + }, + "permanentlyDeleteItem": { + "message": "Radera objekt permanent" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Är du säker på att du vill radera detta objekt permanent?" + }, + "permanentlyDeletedItem": { + "message": "Raderade objekt permanent" + }, + "restoreItem": { + "message": "Återställ objekt" + }, + "restoreItemConfirmation": { + "message": "Är du säker på att du vill återställa detta objekt?" + }, + "restoredItem": { + "message": "Återställde objekt" + }, + "permanentlyDelete": { + "message": "Radera permanent" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Genom att logga ut upphör all åtkomst till valvet och onlineautentisering krävs efter att tidsgränsen överskridits. Är du säker på att du vill använda denna inställning?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Bekräftelse av åtgärd när valvets tidsgräns överskrids" + }, + "enterpriseSingleSignOn": { + "message": "Single Sign-On för företag" + }, + "setMasterPassword": { + "message": "Ange huvudlösenord" + }, + "ssoCompleteRegistration": { + "message": "För att slutföra inloggning med SSO, ange ett huvudlösenord för att komma åt och skydda ditt valv." + }, + "newMasterPass": { + "message": "Nytt huvudlösenord" + }, + "confirmNewMasterPass": { + "message": "Bekräfta nytt huvudlösenord" + }, + "masterPasswordPolicyInEffect": { + "message": "En eller flera organisationspolicyer kräver att ditt huvudlösenord uppfyller följande krav:" + }, + "policyInEffectMinComplexity": { + "message": "Minsta komplexitetspoäng på $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minsta längd på $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Innehålla en eller flera versaler" + }, + "policyInEffectLowercase": { + "message": "Innehålla en eller flera gemener" + }, + "policyInEffectNumbers": { + "message": "Innehålla en eller flera siffror" + }, + "policyInEffectSpecial": { + "message": "Innehålla ett eller flera av följande specialtecken: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Ditt nya huvudlösenord uppfyller inte kraven i policyn." + }, + "acceptPolicies": { + "message": "Genom att markera denna ruta godkänner du följande:" + }, + "acceptPoliciesError": { + "message": "Användarvillkoren och Integritetspolicyn har inte accepterats." + }, + "enableBrowserIntegration": { + "message": "Aktivera webbläsarintegration" + }, + "enableBrowserIntegrationDesc": { + "message": "Webbläsarintegration används för biometri i webbläsaren." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Webbläsarintegration stöds inte" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Tyvärr stöds webbläsarintegration för tillfället endast i versionen från Mac App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Webbläsarintegration stöds inte" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Tyvärr stöds webbläsarintegration för tillfället inte i versionen från Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Kräv verifiering för webbläsarintegration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Aktivera ett ytterligare säkerhetslager genom att kräva validering av fingeravtrycksfrasen när du upprättar en länk mellan skrivbordet och webbläsaren. När det här är aktiverat krävs ingripande och verifiering från användaren varje gång en anslutning etableras." + }, + "approve": { + "message": "Godkänn" + }, + "verifyBrowserTitle": { + "message": "Verifiera webbläsaranslutning" + }, + "verifyBrowserDesc": { + "message": "Säkerställ att det fingeravtrycket som visas är identiskt med fingeravtrycket som visas i webbläsartillägget." + }, + "biometricsNotEnabledTitle": { + "message": "Biometri är inte aktiverat" + }, + "biometricsNotEnabledDesc": { + "message": "Biometri i webbläsaren kräver att biometri på skrivbordet aktiveras i inställningarna först." + }, + "personalOwnershipSubmitError": { + "message": "På grund av en av företagets policyer är du begränsad från att spara objekt till ditt personliga valv. Ändra ägarskap till en organisation och välj från tillgängliga samlingar." + }, + "hintEqualsPassword": { + "message": "Din lösenordsledtråd får inte vara samma som ditt lösenord." + }, + "personalOwnershipPolicyInEffect": { + "message": "En organisationspolicy påverkar dina ägarskapsalternativ." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Fil" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Redigera Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Mitt valv" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Raderingsdatum" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Utgångsdatum" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximalt antal åtkomster" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Nuvarande antal åtkomster" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Nytt lösenord" + }, + "whatTypeOfSend": { + "message": "Vilken typ av Send är detta?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Skapa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Texten du vill skicka." + }, + "sendFileDesc": { + "message": "Filen du vill skicka." + }, + "days": { + "message": "$DAYS$ dagar", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 dag" + }, + "custom": { + "message": "Anpassad" + }, + "deleteSendConfirmation": { + "message": "Är du säker på att du vill radera denna Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Kopiera länk" + }, + "disabled": { + "message": "Inaktiverad" + }, + "maxAccessCountReached": { + "message": "Det maximala antalet åtkomster har uppnåtts" + }, + "expired": { + "message": "Utgången" + }, + "pendingDeletion": { + "message": "Väntar på radering" + }, + "webAuthnAuthenticate": { + "message": "Autentisera WebAuthn" + }, + "hideEmail": { + "message": "Dölj min e-postadress för mottagare." + }, + "sendOptionsPolicyInEffect": { + "message": "En eller flera organisationsriktlinjer påverkar dina Send-inställningar." + }, + "emailVerificationRequired": { + "message": "E-postverifiering krävs" + }, + "emailVerificationRequiredDesc": { + "message": "Du måste verifiera din e-post för att använda den här funktionen." + }, + "passwordPrompt": { + "message": "Återupprepa huvudlösenord" + }, + "passwordConfirmation": { + "message": "Bekräfta huvudlösenord" + }, + "passwordConfirmationDesc": { + "message": "Denna åtgärd är skyddad. För att fortsätta, vänligen verifiera din identitet genom att ange ditt huvudlösenord." + }, + "updatedMasterPassword": { + "message": "Huvudlösenord uppdaterades" + }, + "updateMasterPassword": { + "message": "Uppdatera huvudlösenord" + }, + "updateMasterPasswordWarning": { + "message": "Ditt huvudlösenord ändrades nyligen av en administratör i din organisation. För att få tillgång till valvet måste du uppdatera det nu. Om du fortsätter kommer du att loggas ut från din nuvarande session, vilket kräver att du loggar in igen. Aktiva sessioner på andra enheter kan komma att vara aktiva i upp till en timme." + }, + "hours": { + "message": "Timmar" + }, + "minutes": { + "message": "Minuter" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Dina organisationsprinciper påverkar ditt valvs tid för timeout. Maximal tillåten tid innan timeout är $HOURS$ timme(ar) och $MINUTES$ minut(er)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Ditt valvs tid för timeout överskrider de begränsningar som fastställts av din organisation." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatiskt deltagande" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Denna organisation har en företagspolicy som automatiskt registrerar dig för lösenordsåterställning. Deltagandet gör det möjligt för organisationsadministratörer att ändra ditt huvudlösenord." + }, + "vaultExportDisabled": { + "message": "Valvexport inaktiverad" + }, + "personalVaultExportPolicyInEffect": { + "message": "En eller flera organisationsprinciper hindrar dig från att exportera ditt personliga valv." + }, + "addAccount": { + "message": "Lägg till konto" + }, + "removeMasterPassword": { + "message": "Ta bort huvudlösenord" + }, + "removedMasterPassword": { + "message": "Huvudlösenord togs bort." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ använder SSO med en egen nyckelserver. Ett huvudlösenord krävs inte längre för att logga in för medlemmar i denna organisation.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Lämna organisation" + }, + "leaveOrganizationConfirmation": { + "message": "Är du säker på att du vill lämna denna organisation?" + }, + "leftOrganization": { + "message": "Du har lämnat organisationen." + }, + "ssoKeyConnectorUnavailable": { + "message": "Kunde inte nå key connector, försök igen senare." + }, + "lockAllVaults": { + "message": "Lås alla valv" + }, + "accountLimitReached": { + "message": "Inte mer än 5 konton får vara inloggade samtidigt." + }, + "accountPreferences": { + "message": "Inställningar" + }, + "appPreferences": { + "message": "Appinställningar (alla konton)" + }, + "accountSwitcherLimitReached": { + "message": "Kontogränsen har nåtts. Logga ut från ett konto för att lägga till ett annat." + }, + "settingsTitle": { + "message": "Appinställningar för $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Byt konto" + }, + "options": { + "message": "Alternativ" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json new file mode 100644 index 0000000000..2beca203da --- /dev/null +++ b/apps/desktop/src/locales/th/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "bitwarden" + }, + "filters": { + "message": "ตัวกรอง" + }, + "allItems": { + "message": "รายการทั้งหมด" + }, + "favorites": { + "message": "รายการโปรด" + }, + "types": { + "message": "Types" + }, + "typeLogin": { + "message": "เข้าสู่ระบบ" + }, + "typeCard": { + "message": "บัตร" + }, + "typeIdentity": { + "message": "ข้อมูลระบุตัวตน" + }, + "typeSecureNote": { + "message": "บันทึกการรักษาปลอดภัย" + }, + "folders": { + "message": "โฟลเดอร์" + }, + "collections": { + "message": "คอลเลกชัน" + }, + "searchVault": { + "message": "Search vault" + }, + "addItem": { + "message": "เพิ่มรายการ" + }, + "shared": { + "message": "แบ่งปัน" + }, + "share": { + "message": "Share" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Attachments" + }, + "viewItem": { + "message": "ดูรายการ" + }, + "name": { + "message": "ชื่อ" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "New URI" + }, + "username": { + "message": "ชื่อผู้ใช้" + }, + "password": { + "message": "รหัสผ่าน" + }, + "passphrase": { + "message": "Passphrase" + }, + "editItem": { + "message": "แก้ไขรายการ" + }, + "emailAddress": { + "message": "ที่อยู่อีเมล์" + }, + "verificationCodeTotp": { + "message": "รหัสยืนยัน (TOTP)" + }, + "website": { + "message": "เว็บไซต์" + }, + "notes": { + "message": "Notes" + }, + "customFields": { + "message": "Custom Fields" + }, + "launch": { + "message": "Launch" + }, + "copyValue": { + "message": "คัดลอกค่า", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Minimize when copying to clipboard" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Minimize when copying an item's data to the clipboard." + }, + "toggleVisibility": { + "message": "Toggle Visibility" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Cardholder Name" + }, + "number": { + "message": "หมายเลข" + }, + "brand": { + "message": "แบรนด์" + }, + "expiration": { + "message": "วันหมดอายุ" + }, + "securityCode": { + "message": "รหัสความปลอดภัย" + }, + "identityName": { + "message": "identityName" + }, + "company": { + "message": "บริษัท" + }, + "ssn": { + "message": "หมายเลขประกันสังคม" + }, + "passportNumber": { + "message": "หมายเลขหนังสือเดินทาง" + }, + "licenseNumber": { + "message": "หมายเลขใบอนุญาต" + }, + "email": { + "message": "อีเมล" + }, + "phone": { + "message": "โทรศัพท์" + }, + "address": { + "message": "ที่อยู่" + }, + "premiumRequired": { + "message": "Premium Required" + }, + "premiumRequiredDesc": { + "message": "จำเป็นต้องมีสมาชิกระดับพรีเมียมเพื่อใช้คุณลักษณะนี้" + }, + "errorOccurred": { + "message": "พบข้อผิดพลาด" + }, + "error": { + "message": "ข้อผิดพลาด" + }, + "january": { + "message": "มกราคม" + }, + "february": { + "message": "กุมภาพันธ์" + }, + "march": { + "message": "มีนาคม" + }, + "april": { + "message": "เมษายน" + }, + "may": { + "message": "พฤษภาคม" + }, + "june": { + "message": "มิถุนายน" + }, + "july": { + "message": "กรกฎาคม" + }, + "august": { + "message": "สิงหาคม" + }, + "september": { + "message": "กันยายน" + }, + "october": { + "message": "ตุลาคม" + }, + "november": { + "message": "พฤศจิกายน" + }, + "december": { + "message": "ธันวาคม" + }, + "ex": { + "message": "ex.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "คำนำหน้า" + }, + "mr": { + "message": "นาย" + }, + "mrs": { + "message": "นาง" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "ดร." + }, + "expirationMonth": { + "message": "เดือนที่หมดอายุ" + }, + "expirationYear": { + "message": "ปีที่หมดอายุ" + }, + "select": { + "message": "เลือก" + }, + "other": { + "message": "อื่น ๆ" + }, + "generatePassword": { + "message": "สร้างรหัสผ่าน" + }, + "type": { + "message": "Type" + }, + "firstName": { + "message": "ชื่อจริง" + }, + "middleName": { + "message": "ชื่อกลาง" + }, + "lastName": { + "message": "นามสกุล" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "ที่อยู่ 1" + }, + "address2": { + "message": "ที่อยู่ 2" + }, + "address3": { + "message": "ที่อยู่ 3" + }, + "cityTown": { + "message": "เมือง" + }, + "stateProvince": { + "message": "รัฐ / จังหวัด" + }, + "zipPostalCode": { + "message": "รหัสไปรษณีย์" + }, + "country": { + "message": "ประเทศ" + }, + "save": { + "message": "บันทึก" + }, + "cancel": { + "message": "ยกเลิก" + }, + "delete": { + "message": "ลบ" + }, + "favorite": { + "message": "รายการโปรด" + }, + "edit": { + "message": "แก้ไข" + }, + "authenticatorKeyTotp": { + "message": "คีย์ Authenticator (TOTP)" + }, + "folder": { + "message": "โฟลเดอร์" + }, + "newCustomField": { + "message": "สร้างเขตข้อมูลแบบระบุเอง" + }, + "value": { + "message": "Value" + }, + "dragToSort": { + "message": "Drag to sort" + }, + "cfTypeText": { + "message": "Text" + }, + "cfTypeHidden": { + "message": "ซ่อน" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "เอาออก" + }, + "nameRequired": { + "message": "จำเป็นต้องกรอกชื่อ" + }, + "addedItem": { + "message": "เพิ่มรายการแล้ว" + }, + "editedItem": { + "message": "แก้ไขรายการแล้ว" + }, + "deleteItem": { + "message": "ลบรายการ" + }, + "deleteFolder": { + "message": "ลบโฟลเดอร์" + }, + "deleteAttachment": { + "message": "ลบสิ่งที่แนบมา" + }, + "deleteItemConfirmation": { + "message": "คุณแน่ใจว่าจะลบรายการนี้?" + }, + "deletedItem": { + "message": "ลบรายการแล้ว" + }, + "overwritePasswordConfirmation": { + "message": "คุณแน่ใจว่าต้องการเขียนทับรหัสผ่านปัจจุบัน?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "ไม่มีโฟลเดอร์", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "เพิ่มโฟลเดอร์" + }, + "editFolder": { + "message": "แก้ไขโฟลเดอร์" + }, + "regeneratePassword": { + "message": "สร้างรหัสผ่านใหม่" + }, + "copyPassword": { + "message": "คัดลอกรหัสผ่าน" + }, + "copyUri": { + "message": "คัดลอก URI" + }, + "copyVerificationCodeTotp": { + "message": "Copy Verification Code (TOTP)" + }, + "length": { + "message": "ความยาว" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Capitalize", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Include Number" + }, + "close": { + "message": "ปิด" + }, + "minNumbers": { + "message": "จำนวนตัวเลขต่ำสุด" + }, + "minSpecial": { + "message": "จำนวนตัวพิเศษขั้นต่ำ", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "หลีกเลี่ยงอักขระที่ไม่ชัดเจน" + }, + "searchCollection": { + "message": "Search collection" + }, + "searchFolder": { + "message": "Search folder" + }, + "searchFavorites": { + "message": "Search favorites" + }, + "searchType": { + "message": "Search type", + "description": "Search item type" + }, + "newAttachment": { + "message": "เพิ่มไฟล์แนบใหม่" + }, + "deletedAttachment": { + "message": "ลบไฟล์แนบแล้ว" + }, + "deleteAttachmentConfirmation": { + "message": "Are you sure you want to delete this attachment?" + }, + "attachmentSaved": { + "message": "The attachment has been saved." + }, + "file": { + "message": "File" + }, + "selectFile": { + "message": "เลือกไฟล์" + }, + "maxFileSize": { + "message": "ขนาดไฟล์สูงสุดคือ 500 MB" + }, + "updateKey": { + "message": "คุณไม่สามารถใช้คุณลักษณะนี้ได้จนกว่าคุณปรับปรุงคีย์การเข้ารหัสลับของคุณ" + }, + "editedFolder": { + "message": "แก้​ไข​โฟลเดอร์แล้ว" + }, + "addedFolder": { + "message": "เพิ่มโฟลเดอร์แล้ว" + }, + "deleteFolderConfirmation": { + "message": "คุณแน่ใจหรือว่าคุณต้องการลบโฟลเดอร์นี้?" + }, + "deletedFolder": { + "message": "ลบโฟลเดอร์แล้ว" + }, + "loginOrCreateNewAccount": { + "message": "ลงชื่อเข้าใช้หรือสร้างบัญชีใหม่เพื่อเข้าสู่ห้องนิรภัยที่ปลอดภัยของคุณ" + }, + "createAccount": { + "message": "สร้างบัญชี" + }, + "logIn": { + "message": "เข้าสู่ระบบ" + }, + "submit": { + "message": "ส่งข้อมูล" + }, + "masterPass": { + "message": "รหัสผ่านหลัก" + }, + "masterPassDesc": { + "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." + }, + "masterPassHintDesc": { + "message": "A master password hint can help you remember your password if you forget it." + }, + "reTypeMasterPass": { + "message": "Re-type Master Password" + }, + "masterPassHint": { + "message": "Master Password Hint (optional)" + }, + "settings": { + "message": "การตั้งค่า" + }, + "passwordHint": { + "message": "คำใบ้รหัสผ่าน" + }, + "enterEmailToGetHint": { + "message": "Enter your account email address to receive your master password hint." + }, + "getMasterPasswordHint": { + "message": "รับคำใบ้เกี่ยวกับรหัสผ่านหลักของคุณ" + }, + "emailRequired": { + "message": "จำเป็นต้องกรอกที่อยู่อีเมล" + }, + "invalidEmail": { + "message": "ที่อยู่อีเมลไม่ถูกต้อง" + }, + "masterPassRequired": { + "message": "จำเป็นต้องมีรหัสผ่านหลัก" + }, + "masterPassLength": { + "message": "Master password must be at least 8 characters long." + }, + "masterPassDoesntMatch": { + "message": "Master password confirmation does not match." + }, + "newAccountCreated": { + "message": "Your new account has been created! You may now log in." + }, + "masterPassSent": { + "message": "We've sent you an email with your master password hint." + }, + "unexpectedError": { + "message": "An unexpected error has occurred." + }, + "itemInformation": { + "message": "ข้อมูลรายการ" + }, + "noItemsInList": { + "message": "There are no items to list." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "รหัสยืนยัน" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Verification code is required." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "ดำเนินการต่อไป" + }, + "enterVerificationCodeApp": { + "message": "ป้อนรหัสยืนยัน 6 หลักจากคุณแอป authenticator" + }, + "enterVerificationCodeEmail": { + "message": "ป้อนรหัสยืนยัน 6 หลักที่ส่งทางอีเมล $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Verification email sent to $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "จดจำการเข้าระบบของฉัน" + }, + "sendVerificationCodeEmailAgain": { + "message": "ส่งอีเมล์ยืนยันรหัสอีกครั้ง" + }, + "useAnotherTwoStepMethod": { + "message": "ใช้วิธีลงชื่อเข้าใช้แบบสองขั้นตอนวิธีอื่น" + }, + "insertYubiKey": { + "message": "Insert your YubiKey into your computer's USB port, then touch its button." + }, + "insertU2f": { + "message": "Insert your security key into your computer's USB port. If it has a button, touch it." + }, + "recoveryCodeDesc": { + "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + }, + "recoveryCodeTitle": { + "message": "รหัสกู้คืน" + }, + "authenticatorAppTitle": { + "message": "แอป Authenticator" + }, + "authenticatorAppDesc": { + "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Security Key" + }, + "yubiKeyDesc": { + "message": "Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices." + }, + "duoDesc": { + "message": "Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "อีเมล" + }, + "emailDesc": { + "message": "Verification codes will be emailed to you." + }, + "loginUnavailable": { + "message": "เข้าสู่ระบบไม่พร้อมใช้งาน" + }, + "noTwoStepProviders": { + "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this device." + }, + "noTwoStepProviders2": { + "message": "Please add additional providers that are better supported across devices (such as an authenticator app)." + }, + "twoStepOptions": { + "message": "ตัวเลือกการเข้าสู่ระบบแบบสองขั้นตอน" + }, + "selfHostedEnvironment": { + "message": "Self-hosted Environment" + }, + "selfHostedEnvironmentFooter": { + "message": "Specify the base URL of your on-premise hosted bitwarden installation." + }, + "customEnvironment": { + "message": "Custom Environment" + }, + "customEnvironmentFooter": { + "message": "For advanced users. You can specify the base URL of each service independently." + }, + "baseUrl": { + "message": "Server URL" + }, + "apiUrl": { + "message": "API Server URL" + }, + "webVaultUrl": { + "message": "Web Vault Server URL" + }, + "identityUrl": { + "message": "Identity Server URL" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Icons Server URL" + }, + "environmentSaved": { + "message": "The environment URLs have been saved." + }, + "ok": { + "message": "ตกลง" + }, + "yes": { + "message": "ใช่" + }, + "no": { + "message": "ไม่ใช่" + }, + "overwritePassword": { + "message": "เขียนทับรหัสผ่าน" + }, + "learnMore": { + "message": "เรียนรู้เพิ่มเติม" + }, + "featureUnavailable": { + "message": "Feature Unavailable" + }, + "loggedOut": { + "message": "Logged out" + }, + "loginExpired": { + "message": "Your login session has expired." + }, + "logOutConfirmation": { + "message": "Are you sure you want to log out?" + }, + "logOut": { + "message": "Log Out" + }, + "addNewLogin": { + "message": "เพิ่มการเข้าสู่ระบบใหม่" + }, + "addNewItem": { + "message": "เพิ่มรายการใหม่" + }, + "addNewFolder": { + "message": "เพิ่มโฟลเดอร์ใหม่" + }, + "view": { + "message": "View" + }, + "account": { + "message": "บัญชี" + }, + "loading": { + "message": "กำลังโหลด..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "ตัวสร้างรหัสผ่าน" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "File a Bug Report" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Follow Us" + }, + "syncVault": { + "message": "Sync Vault" + }, + "changeMasterPass": { + "message": "เปลี่ยนรหัสผ่านหลัก" + }, + "changeMasterPasswordConfirmation": { + "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Your account's fingerprint phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Go To Web Vault" + }, + "getMobileApp": { + "message": "รับแอปมือถือ" + }, + "getBrowserExtension": { + "message": "Get Browser Extension" + }, + "syncingComplete": { + "message": "Syncing complete" + }, + "syncingFailed": { + "message": "Syncing failed" + }, + "yourVaultIsLocked": { + "message": "Your vault is locked. Verify your identity to continue." + }, + "unlock": { + "message": "Unlock" + }, + "loggedInAsOn": { + "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Invalid master password" + }, + "twoStepLoginConfirmation": { + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "twoStepLogin": { + "message": "เข้าสู่ระบบแบบสองขั้นตอน" + }, + "vaultTimeout": { + "message": "Vault Timeout" + }, + "vaultTimeoutDesc": { + "message": "Choose when your vault will timeout and perform the selected action." + }, + "immediately": { + "message": "ทันที" + }, + "tenSeconds": { + "message": "10 seconds" + }, + "twentySeconds": { + "message": "20 seconds" + }, + "thirtySeconds": { + "message": "30 seconds" + }, + "oneMinute": { + "message": "1 นาที" + }, + "twoMinutes": { + "message": "2 minutes" + }, + "fiveMinutes": { + "message": "5 นาที" + }, + "fifteenMinutes": { + "message": "15 นาที" + }, + "thirtyMinutes": { + "message": "30 นาที" + }, + "oneHour": { + "message": "1 ชั่วโมง" + }, + "fourHours": { + "message": "4 ชั่วโมง" + }, + "onIdle": { + "message": "On System Idle" + }, + "onSleep": { + "message": "On System Sleep" + }, + "onLocked": { + "message": "On System Lock" + }, + "onRestart": { + "message": "On Restart" + }, + "never": { + "message": "Never" + }, + "security": { + "message": "Security" + }, + "clearClipboard": { + "message": "Clear Clipboard", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Automatically clear copied values from your clipboard.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Disable Website Icons" + }, + "disableFaviconDesc": { + "message": "Website Icons provide a recognizable image next to each login item in your vault." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "When closing the window, show an icon in the system tray instead." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Always show an icon in the system tray." + }, + "startToTray": { + "message": "Start To Tray Icon" + }, + "startToTrayDesc": { + "message": "When the application is first started, only show an icon in the system tray." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Language" + }, + "languageDesc": { + "message": "Change the language used by the application. Restart is required." + }, + "theme": { + "message": "Theme" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Dark", + "description": "Dark color" + }, + "light": { + "message": "Light", + "description": "Light color" + }, + "copy": { + "message": "คัดลอก", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "ตรวจสอบการอัปเดต" + }, + "version": { + "message": "รุ่น $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Restart To Update" + }, + "restartToUpdateDesc": { + "message": "Version $VERSION_NUM$ is ready to install. You must restart Bitwarden to complete the installation. Do you want to restart and update now?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Update Available" + }, + "updateAvailableDesc": { + "message": "An update was found. Do you want to download it now?" + }, + "restart": { + "message": "เริ่มต้นใหม่" + }, + "later": { + "message": "ภายหลัง" + }, + "noUpdatesAvailable": { + "message": "โปรแกรมไม่มีการปรับปรุงอยู่ในขณะนี้ คุณกำลังใช้รุ่นล่าสุด" + }, + "updateError": { + "message": "เกิดข้อผิดพลาดในการอัปเดต" + }, + "unknown": { + "message": "Unknown" + }, + "copyUsername": { + "message": "คัดลอกชื่อผู้ใช้" + }, + "copyNumber": { + "message": "คัดลอกหมายเลข", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "คัดลอกรหัสรักษาความปลอดภัย", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium Membership" + }, + "premiumManage": { + "message": "Manage Membership" + }, + "premiumManageAlert": { + "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumRefresh": { + "message": "Refresh Membership" + }, + "premiumNotCurrentMember": { + "message": "You are not currently a premium member." + }, + "premiumSignUpAndGet": { + "message": "Sign up for a premium membership and get:" + }, + "premiumSignUpStorage": { + "message": "1 GB of encrypted file storage." + }, + "premiumSignUpTwoStep": { + "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + }, + "premiumSignUpReports": { + "message": "Password hygiene, account health, and data breach reports to keep your vault safe." + }, + "premiumSignUpTotp": { + "message": "TOTP verification code (2FA) generator for logins in your vault." + }, + "premiumSignUpSupport": { + "message": "Priority customer support." + }, + "premiumSignUpFuture": { + "message": "All future premium features. More coming soon!" + }, + "premiumPurchase": { + "message": "Purchase Premium" + }, + "premiumPurchaseAlert": { + "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + }, + "premiumCurrentMember": { + "message": "You are a premium member!" + }, + "premiumCurrentMemberThanks": { + "message": "Thank you for supporting bitwarden." + }, + "premiumPrice": { + "message": "All for just $PRICE$ /year!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Refresh complete" + }, + "passwordHistory": { + "message": "ประวัติของรหัสผ่าน" + }, + "clear": { + "message": "Clear", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "There are no passwords to list." + }, + "undo": { + "message": "Undo" + }, + "redo": { + "message": "Redo" + }, + "cut": { + "message": "ตัด", + "description": "Cut to clipboard" + }, + "paste": { + "message": "วาง", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "เลือกทั้งหมด" + }, + "zoomIn": { + "message": "ซูมเข้า" + }, + "zoomOut": { + "message": "ซูมออก" + }, + "resetZoom": { + "message": "รีเซ็ตการซูม" + }, + "toggleFullScreen": { + "message": "สลับแบบเต็มหน้าจอ" + }, + "reload": { + "message": "โหลดใหม่" + }, + "toggleDevTools": { + "message": "สลับไปเครื่องมือนักพัฒนา" + }, + "minimize": { + "message": "ย่อเล็กที่สุด", + "description": "Minimize window" + }, + "zoom": { + "message": "ซูม" + }, + "bringAllToFront": { + "message": "Bring All to Front", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "About Bitwarden" + }, + "services": { + "message": "Services" + }, + "hideBitwarden": { + "message": "ซ่อน Bitwarden" + }, + "hideOthers": { + "message": "Hide Others" + }, + "showAll": { + "message": "แสดงทั้งหมด" + }, + "quitBitwarden": { + "message": "ออกจาก Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ คัดลอกแล้ว", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "ช่วยเหลือ" + }, + "window": { + "message": "Window" + }, + "checkPassword": { + "message": "Check if password has been exposed." + }, + "passwordExposed": { + "message": "This password has been exposed $VALUE$ time(s) in data breaches. You should change it.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "This password was not found in any known data breaches. It should be safe to use." + }, + "baseDomain": { + "message": "Base domain", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Host", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Exact" + }, + "startsWith": { + "message": "Starts with" + }, + "regEx": { + "message": "Regular expression", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Match Detection", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Default match detection", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Toggle Options" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Default" + }, + "exit": { + "message": "Exit" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Always on Top", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Updated", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "WARNING", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "There are no collections to list." + }, + "ownership": { + "message": "Ownership" + }, + "whoOwnsThisItem": { + "message": "Who owns this item?" + }, + "strong": { + "message": "Strong", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Good", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Weak", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Unlock with PIN" + }, + "setYourPinCode": { + "message": "Set your PIN code for unlocking Bitwarden. Your PIN settings will be reset if you ever fully log out of the application." + }, + "pinRequired": { + "message": "PIN code is required." + }, + "invalidPin": { + "message": "Invalid PIN code." + }, + "unlockWithWindowsHello": { + "message": "Unlock with Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Verify for Bitwarden." + }, + "unlockWithTouchId": { + "message": "Unlock with Touch ID" + }, + "touchIdConsentMessage": { + "message": "unlock your vault" + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Lock with master password on restart" + }, + "preferences": { + "message": "Preferences" + }, + "enableMenuBar": { + "message": "Enable Menu Bar Icon" + }, + "enableMenuBarDesc": { + "message": "Always show an icon in the menu bar." + }, + "hideToMenuBar": { + "message": "Hide to Menu Bar" + }, + "selectOneCollection": { + "message": "You must select at least one collection." + }, + "premiumUpdated": { + "message": "You've upgraded to premium." + }, + "restore": { + "message": "Restore" + }, + "premiumManageAlertAppStore": { + "message": "You can manage your subscription from the App Store. Do you want to visit the App Store now?" + }, + "legal": { + "message": "Legal", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Terms of Service" + }, + "privacyPolicy": { + "message": "Privacy Policy" + }, + "unsavedChangesConfirmation": { + "message": "Are you sure you want to leave? If you leave now then your current information will not be saved." + }, + "unsavedChangesTitle": { + "message": "Unsaved Changes" + }, + "clone": { + "message": "Clone" + }, + "passwordGeneratorPolicyInEffect": { + "message": "One or more organization policies are affecting your generator settings." + }, + "vaultTimeoutAction": { + "message": "Vault Timeout Action" + }, + "vaultTimeoutActionLockDesc": { + "message": "A locked vault requires that you re-enter your master password to access it again." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "A logged out vault requires that you re-authenticate to access it again." + }, + "lock": { + "message": "Lock", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Trash", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Search trash" + }, + "permanentlyDeleteItem": { + "message": "Permanently Delete Item" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Are you sure you want to permanently delete this item?" + }, + "permanentlyDeletedItem": { + "message": "Permanently Deleted item" + }, + "restoreItem": { + "message": "Restore Item" + }, + "restoreItemConfirmation": { + "message": "Are you sure you want to restore this item?" + }, + "restoredItem": { + "message": "Restored Item" + }, + "permanentlyDelete": { + "message": "Permanently Delete" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Timeout Action Confirmation" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Set Master Password" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "New Master Password" + }, + "confirmNewMasterPass": { + "message": "Confirm New Master Password" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Contain one or more uppercase characters" + }, + "policyInEffectLowercase": { + "message": "Contain one or more lowercase characters" + }, + "policyInEffectNumbers": { + "message": "Contain one or more numbers" + }, + "policyInEffectSpecial": { + "message": "Contain one or more of the following special characters $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Approve" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "All Sends", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "File" + }, + "sendTypeText": { + "message": "Text" + }, + "searchSends": { + "message": "Search Sends", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Edit Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "My Vault" + }, + "text": { + "message": "Text" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "The Send will be permanently deleted on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Expiration Date" + }, + "expirationDateDesc": { + "message": "If set, access to this Send will expire on the specified date and time.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maximum Access Count" + }, + "maxAccessCountDesc": { + "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Current Access Count" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Created Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Edited Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Deleted Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "New Password" + }, + "whatTypeOfSend": { + "message": "What type of Send is this?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Create Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "The text you want to send." + }, + "sendFileDesc": { + "message": "The file you want to send." + }, + "days": { + "message": "$DAYS$ days", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 day" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Are you sure you want to delete this Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Send disabled", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Copy link" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Pending deletion" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json new file mode 100644 index 0000000000..a946bab5af --- /dev/null +++ b/apps/desktop/src/locales/tr/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Filtreler" + }, + "allItems": { + "message": "Tüm kayıtlar" + }, + "favorites": { + "message": "Favoriler" + }, + "types": { + "message": "Türler" + }, + "typeLogin": { + "message": "Hesap" + }, + "typeCard": { + "message": "Kart" + }, + "typeIdentity": { + "message": "Kimlik" + }, + "typeSecureNote": { + "message": "Güvenli not" + }, + "folders": { + "message": "Klasörler" + }, + "collections": { + "message": "Koleksiyonlar" + }, + "searchVault": { + "message": "Kasada ara" + }, + "addItem": { + "message": "Kayıt ekle" + }, + "shared": { + "message": "Paylaşılan" + }, + "share": { + "message": "Paylaş" + }, + "moveToOrganization": { + "message": "Kuruluşa taşı" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ $ORGNAME$ kuruluşuna taşındı", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Bu kaydı taşımak istediğiniz kuruluşu seçin. Taşıdığınız kaydın sahipliği seçtiğiniz kuruluşa aktarılacak. Artık bu kaydın doğrudan sahibi olmayacaksınız." + }, + "attachments": { + "message": "Ekler" + }, + "viewItem": { + "message": "Kaydı göster" + }, + "name": { + "message": "Ad" + }, + "uri": { + "message": "URl" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Yeni URI" + }, + "username": { + "message": "Kullanıcı adı" + }, + "password": { + "message": "Parola" + }, + "passphrase": { + "message": "Uzun söz" + }, + "editItem": { + "message": "Kaydı düzenle" + }, + "emailAddress": { + "message": "E-posta adresi" + }, + "verificationCodeTotp": { + "message": "Doğrulama kodu (TOTP)" + }, + "website": { + "message": "Web sitesi" + }, + "notes": { + "message": "Notlar" + }, + "customFields": { + "message": "Özel alanlar" + }, + "launch": { + "message": "Aç" + }, + "copyValue": { + "message": "Değeri kopyala", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Panoya kaydederken küçült" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Bir kaydın verilerini panoya kopyalarken simge durumuna küçült." + }, + "toggleVisibility": { + "message": "Görünürlüğü aç/kapat" + }, + "toggleCollapse": { + "message": "Daraltmayı aç/kapat", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Kart sahibinin adı" + }, + "number": { + "message": "Numara" + }, + "brand": { + "message": "Marka" + }, + "expiration": { + "message": "Son kullanma tarihi" + }, + "securityCode": { + "message": "Güvenlik kodu" + }, + "identityName": { + "message": "Kimlik adı" + }, + "company": { + "message": "Şirket" + }, + "ssn": { + "message": "Sosyal güvenlik numarası" + }, + "passportNumber": { + "message": "Pasaport numarası" + }, + "licenseNumber": { + "message": "Ehliyet numarası" + }, + "email": { + "message": "E-posta" + }, + "phone": { + "message": "Telefon" + }, + "address": { + "message": "Adres" + }, + "premiumRequired": { + "message": "Premium gerekli" + }, + "premiumRequiredDesc": { + "message": "Bu özelliği kullanmak için premium üyelik gereklidir." + }, + "errorOccurred": { + "message": "Bir hata oluştu." + }, + "error": { + "message": "Hata" + }, + "january": { + "message": "Ocak" + }, + "february": { + "message": "Şubat" + }, + "march": { + "message": "Mart" + }, + "april": { + "message": "Nisan" + }, + "may": { + "message": "Mayıs" + }, + "june": { + "message": "Haziran" + }, + "july": { + "message": "Temmuz" + }, + "august": { + "message": "Ağustos" + }, + "september": { + "message": "Eylül" + }, + "october": { + "message": "Ekim" + }, + "november": { + "message": "Kasım" + }, + "december": { + "message": "Aralık" + }, + "ex": { + "message": "örn.", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Unvan" + }, + "mr": { + "message": "Bay" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "Son kullanma ayı" + }, + "expirationYear": { + "message": "Son kullanma yılı" + }, + "select": { + "message": "Seç" + }, + "other": { + "message": "Diğer" + }, + "generatePassword": { + "message": "Parola oluştur" + }, + "type": { + "message": "Tür" + }, + "firstName": { + "message": "Ad" + }, + "middleName": { + "message": "İkinci ad" + }, + "lastName": { + "message": "Soyadı" + }, + "fullName": { + "message": "Adı soyadı" + }, + "address1": { + "message": "Adres 1" + }, + "address2": { + "message": "Adres 2" + }, + "address3": { + "message": "Adres 3" + }, + "cityTown": { + "message": "İlçe" + }, + "stateProvince": { + "message": "İl / eyalet" + }, + "zipPostalCode": { + "message": "Posta kodu" + }, + "country": { + "message": "Ülke" + }, + "save": { + "message": "Kaydet" + }, + "cancel": { + "message": "İptal" + }, + "delete": { + "message": "Sil" + }, + "favorite": { + "message": "Favori" + }, + "edit": { + "message": "Düzenle" + }, + "authenticatorKeyTotp": { + "message": "Kimlik doğrulama anahtarı (TOTP)" + }, + "folder": { + "message": "Klasör" + }, + "newCustomField": { + "message": "Yeni özel alan" + }, + "value": { + "message": "Değer" + }, + "dragToSort": { + "message": "Sıralamak için sürükleyin" + }, + "cfTypeText": { + "message": "Metin" + }, + "cfTypeHidden": { + "message": "Gizli" + }, + "cfTypeBoolean": { + "message": "Boolean" + }, + "cfTypeLinked": { + "message": "Bağlantılı", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Bağlı değer", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Kaldır" + }, + "nameRequired": { + "message": "Ad gereklidir." + }, + "addedItem": { + "message": "Kayıt eklendi" + }, + "editedItem": { + "message": "Kayıt düzenlendi" + }, + "deleteItem": { + "message": "Kaydı sil" + }, + "deleteFolder": { + "message": "Klasörü sil" + }, + "deleteAttachment": { + "message": "Eki sil" + }, + "deleteItemConfirmation": { + "message": "Çöp kutusuna göndermek istediğinizden emin misiniz?" + }, + "deletedItem": { + "message": "Kayıt çöp kutusuna gönderildi" + }, + "overwritePasswordConfirmation": { + "message": "Mevcut parolanın üzerine kaydetmek istediğinize emin misiniz?" + }, + "overwriteUsername": { + "message": "Kullanıcı adının üzerine yaz" + }, + "overwriteUsernameConfirmation": { + "message": "Kullanıcı adının üzerine kaydetmek istediğinizden emin misiniz?" + }, + "noneFolder": { + "message": "Klasör yok", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Klasör ekle" + }, + "editFolder": { + "message": "Klasörü düzenle" + }, + "regeneratePassword": { + "message": "Yeni parola oluştur" + }, + "copyPassword": { + "message": "Parolayı kopyala" + }, + "copyUri": { + "message": "URI'yi kopyala" + }, + "copyVerificationCodeTotp": { + "message": "Doğrulama kodunu kopyala (TOTP)" + }, + "length": { + "message": "Uzunluk" + }, + "numWords": { + "message": "Kelime sayısı" + }, + "wordSeparator": { + "message": "Kelime ayracı" + }, + "capitalize": { + "message": "Baş harfleri büyük yap", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Rakam ekle" + }, + "close": { + "message": "Kapat" + }, + "minNumbers": { + "message": "En az rakam" + }, + "minSpecial": { + "message": "En az özel karakter", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Okurken karışabilecek karakterleri kullanma" + }, + "searchCollection": { + "message": "Koleksiyonda ara" + }, + "searchFolder": { + "message": "Klasörde ara" + }, + "searchFavorites": { + "message": "Favorilerde ara" + }, + "searchType": { + "message": "Arama türü", + "description": "Search item type" + }, + "newAttachment": { + "message": "Yeni dosya ekle" + }, + "deletedAttachment": { + "message": "Ek silindi" + }, + "deleteAttachmentConfirmation": { + "message": "Bu eki silmek istediğinize emin misiniz?" + }, + "attachmentSaved": { + "message": "Ekiniz kaydedildi." + }, + "file": { + "message": "Dosya" + }, + "selectFile": { + "message": "Bir dosya seç." + }, + "maxFileSize": { + "message": "Maksimum dosya boyutu 500 MB'dir." + }, + "updateKey": { + "message": "Şifreleme anahtarınızı güncelleştirene kadar bu özelliği kullanamazsınız." + }, + "editedFolder": { + "message": "Klasör Düzenlendi" + }, + "addedFolder": { + "message": "Klasör eklendi" + }, + "deleteFolderConfirmation": { + "message": "Bu klasörü silmek istediğinize emin misiniz?" + }, + "deletedFolder": { + "message": "Klasör silindi" + }, + "loginOrCreateNewAccount": { + "message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun." + }, + "createAccount": { + "message": "Hesap Oluştur" + }, + "logIn": { + "message": "Giriş Yap" + }, + "submit": { + "message": "Gönder" + }, + "masterPass": { + "message": "Ana Parola" + }, + "masterPassDesc": { + "message": "Ana parola, kasanıza ulaşmak için kullanacağınız paroladır. Ana parolanızı unutmamanız çok önemlidir. Ana parolanızı unutmanız durumunda parolanızı geri getirecek herhangi bir yol bulunmuyor." + }, + "masterPassHintDesc": { + "message": "Bir ana parola ipucu, unutmanız durumunda parolanızı hatırlamanıza yardımcı olabilir." + }, + "reTypeMasterPass": { + "message": "Ana parolayı tekrar yazın" + }, + "masterPassHint": { + "message": "Ana Parola İpucu (isteğe bağlı)" + }, + "settings": { + "message": "Ayarlar" + }, + "passwordHint": { + "message": "Parola İpucu" + }, + "enterEmailToGetHint": { + "message": "Ana parola ipucunu almak için hesabınızın e-posta adresini girin." + }, + "getMasterPasswordHint": { + "message": "Ana parola ipucunu al" + }, + "emailRequired": { + "message": "E-posta adresi gereklidir." + }, + "invalidEmail": { + "message": "Geçersiz e-posta adresi." + }, + "masterPassRequired": { + "message": "Ana parola gereklidir." + }, + "masterPassLength": { + "message": "Ana parola en az 8 karakter uzunluğunda olmalıdır." + }, + "masterPassDoesntMatch": { + "message": "Parola ve parola onayı eşleşmiyor." + }, + "newAccountCreated": { + "message": "Yeni hesabınız oluşturuldu! Şimdi giriş yapabilirsiniz." + }, + "masterPassSent": { + "message": "Size ana parolanızın ipucunu içeren bir e-posta gönderdik." + }, + "unexpectedError": { + "message": "Beklenmedik bir hata oluştu." + }, + "itemInformation": { + "message": "Kayıt bilgileri" + }, + "noItemsInList": { + "message": "Görüntülenecek kayıt yok." + }, + "sendVerificationCode": { + "message": "E-posta adresime doğrulama kodu gönder" + }, + "sendCode": { + "message": "Kod gönder" + }, + "codeSent": { + "message": "Kod gönderildi" + }, + "verificationCode": { + "message": "Doğrulama Kodu" + }, + "confirmIdentity": { + "message": "Devam etmek için kimliğinizi doğrulayın." + }, + "verificationCodeRequired": { + "message": "Doğrulama kodu gereklidir." + }, + "invalidVerificationCode": { + "message": "Geçersiz doğrulama kodu" + }, + "continue": { + "message": "Devam Et" + }, + "enterVerificationCodeApp": { + "message": "Kimlik doğrulayıcı uygulamanızdaki 6 haneli doğrulama kodunu girin." + }, + "enterVerificationCodeEmail": { + "message": "$EMAIL$ adresine e-postalanan 6 haneli doğrulama kodunu girin.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Doğrulama e-postası $EMAIL$ 'e gönderildi.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Beni hatırla" + }, + "sendVerificationCodeEmailAgain": { + "message": "Doğrulama kodunu yeniden e-postala" + }, + "useAnotherTwoStepMethod": { + "message": "Başka bir iki aşamalı giriş yöntemini kullan" + }, + "insertYubiKey": { + "message": "YubiKey'i bilgisayarınızın USB portuna takın, ardından düğmesine dokunun." + }, + "insertU2f": { + "message": "Güvenlik anahtarınızı bilgisayarınızın USB portuna takın. Bir düğmesi varsa dokunun." + }, + "recoveryCodeDesc": { + "message": "İki aşamalı doğrulama sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz." + }, + "recoveryCodeTitle": { + "message": "Kurtarma kodu" + }, + "authenticatorAppTitle": { + "message": "Kimlik doğrulayıcı uygulama" + }, + "authenticatorAppDesc": { + "message": "Zamana dayalı doğrulama kodları oluşturmak için bir kimlik doğrulayıcı uygulaması (Authy veya Google Authenticator gibi) kullanın.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP Güvenlik Anahtarı" + }, + "yubiKeyDesc": { + "message": "Hesabınıza erişmek için bir YubiKey kullanın. YubiKey 4, 4 Nano, 4C ve NEO cihazlarıyla çalışır." + }, + "duoDesc": { + "message": "Duo Security ile doğrulama için Duo Mobile uygulaması, SMS, telefon görüşmesi veya U2F güvenlik anahtarını kullanın.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Kuruluşunuzun Duo Security doğrulaması için Duo Mobile uygulaması, SMS, telefon görüşmesi veya U2F güvenlik anahtarını kullanın.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Hesabınıza erişmek için WebAuthn uyumlu bir güvenlik anahtarı kullanın." + }, + "emailTitle": { + "message": "E-posta" + }, + "emailDesc": { + "message": "Doğrulama kodu size e-postalanacak." + }, + "loginUnavailable": { + "message": "Giriş yapılamıyor" + }, + "noTwoStepProviders": { + "message": "Bu hesapta iki aşamalı giriş etkin ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu cihazı desteklemiyor." + }, + "noTwoStepProviders2": { + "message": "Lütfen daha iyi aygıtları (örneğin, bir kimlik doğrulayıcı app) arasında desteklenen ek sağlayıcıları ekleyin." + }, + "twoStepOptions": { + "message": "İki aşamalı giriş seçenekleri" + }, + "selfHostedEnvironment": { + "message": "Şirket içinde barındırılan ortam" + }, + "selfHostedEnvironmentFooter": { + "message": "Kurum içi barındırılan Bitwarden kurulumunuzun taban URL'sini belirtin." + }, + "customEnvironment": { + "message": "Özel ortam" + }, + "customEnvironmentFooter": { + "message": "Üst düzey kullanıcılar için. Her servisin taban URL'sini bağımsız olarak belirleyebilirsiniz." + }, + "baseUrl": { + "message": "Sunucu URL'si" + }, + "apiUrl": { + "message": "API Sunucu URL'si" + }, + "webVaultUrl": { + "message": "Web Kasası Sunucu URL'si" + }, + "identityUrl": { + "message": "Kimlik Sunucu URL'si" + }, + "notificationsUrl": { + "message": "Bildirim Sunucusu URL'si" + }, + "iconsUrl": { + "message": "Simge sunucusu URL'si" + }, + "environmentSaved": { + "message": "Çevre URL'ler kaydedildi." + }, + "ok": { + "message": "Tamam" + }, + "yes": { + "message": "Evet" + }, + "no": { + "message": "Hayır" + }, + "overwritePassword": { + "message": "Parolanın üzerine yaz" + }, + "learnMore": { + "message": "Daha fazla bilgi al" + }, + "featureUnavailable": { + "message": "Özellik mevcut değil" + }, + "loggedOut": { + "message": "Çıkış yapıldı" + }, + "loginExpired": { + "message": "Oturumunuzun süresi doldu." + }, + "logOutConfirmation": { + "message": "Çıkmak istediğinize emin misiniz?" + }, + "logOut": { + "message": "Çıkış yap" + }, + "addNewLogin": { + "message": "Yeni hesap ekle" + }, + "addNewItem": { + "message": "Yeni kayıt ekle" + }, + "addNewFolder": { + "message": "Yeni klasör ekle" + }, + "view": { + "message": "Görüntüle" + }, + "account": { + "message": "Hesap" + }, + "loading": { + "message": "Yükleniyor..." + }, + "lockVault": { + "message": "Kasayı kilitle" + }, + "passwordGenerator": { + "message": "Parola oluşturucu" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Hata bildirin" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Bizi takip edin" + }, + "syncVault": { + "message": "Kasayı eşitle" + }, + "changeMasterPass": { + "message": "Ana parolayı değiştir" + }, + "changeMasterPasswordConfirmation": { + "message": "Ana parolanızı bitwarden.com web kasası üzerinden değiştirebilirsiniz. Siteyi şimdi ziyaret etmek ister misiniz?" + }, + "fingerprintPhrase": { + "message": "Parmak izi ifadesi", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Hesabınızın parmak izi ifadesi", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Web kasasına git" + }, + "getMobileApp": { + "message": "Mobil uygulamayı indir" + }, + "getBrowserExtension": { + "message": "Tarayıcı uzantısını indir" + }, + "syncingComplete": { + "message": "Eşitleme tamamlandı" + }, + "syncingFailed": { + "message": "Eşitleme başarısız oldu" + }, + "yourVaultIsLocked": { + "message": "Kasanız kilitli. Devam etmek için kimliğinizi doğrulayın." + }, + "unlock": { + "message": "Kilidi aç" + }, + "loggedInAsOn": { + "message": "$HOSTNAME$ üzerinde $EMAIL$ adresiyle oturum açtınız.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Geçersiz ana parola" + }, + "twoStepLoginConfirmation": { + "message": "İki aşamalı giriş, hesabınıza girererken işlemi bir güvenlik anahtarı, şifrematik uygulaması, SMS, telefon araması veya e-posta gibi ek bir yöntemle doğrulamanızı isteyerek hesabınızın güvenliğini artırır. İki aşamalı giriş özelliğini bitwarden.com web kasası üzerinden etkinleştirebilirsiniz. Şimdi siteye gitmek ister misiniz?" + }, + "twoStepLogin": { + "message": "İki aşamalı giriş" + }, + "vaultTimeout": { + "message": "Kasa zaman aşımı" + }, + "vaultTimeoutDesc": { + "message": "Kasanızın zaman aşımına uğrayacağı ve seçilen işlemi gerçekleştirmede seçin." + }, + "immediately": { + "message": "Hemen" + }, + "tenSeconds": { + "message": "10 saniye" + }, + "twentySeconds": { + "message": "20 saniye" + }, + "thirtySeconds": { + "message": "30 saniye" + }, + "oneMinute": { + "message": "1 dakika" + }, + "twoMinutes": { + "message": "2 dakika" + }, + "fiveMinutes": { + "message": "5 dakika" + }, + "fifteenMinutes": { + "message": "15 dakika" + }, + "thirtyMinutes": { + "message": "30 dakika" + }, + "oneHour": { + "message": "1 saat" + }, + "fourHours": { + "message": "4 saat" + }, + "onIdle": { + "message": "Sistem boştayken" + }, + "onSleep": { + "message": "Sistem uyuyunca" + }, + "onLocked": { + "message": "Sistem kilitlenince" + }, + "onRestart": { + "message": "Yeniden başlatılınca" + }, + "never": { + "message": "Hiçbir zaman" + }, + "security": { + "message": "Güvenlik" + }, + "clearClipboard": { + "message": "Panoyu temizle", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Kopyalanan değerleri otomatik olarak panodan sil.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Site simgelerini devre dışı bırak" + }, + "disableFaviconDesc": { + "message": "Web sitesi simgeleri, kasanızdaki her kaydın yanında o siteyi tanımanıza yardımcı olan bir resim sunar." + }, + "enableMinToTray": { + "message": "Tepsi simgesine küçült" + }, + "enableMinToTrayDesc": { + "message": "Pencere küçültülünce sistem tepsisinde bir simge göster." + }, + "enableMinToMenuBar": { + "message": "Menü çubuğuna küçült" + }, + "enableMinToMenuBarDesc": { + "message": "Pencere küçültülünce menü çubuğunda bir simge göster." + }, + "enableCloseToTray": { + "message": "Tepsi simgesine kapat" + }, + "enableCloseToTrayDesc": { + "message": "Pencere kapatılınca sistem tepsisinde bir simge göster." + }, + "enableCloseToMenuBar": { + "message": "Menü çubuğuna kapat" + }, + "enableCloseToMenuBarDesc": { + "message": "Pencere kapatılınca menü çubuğunda bir simge göster." + }, + "enableTray": { + "message": "Tepsi simgesini etkinleştir" + }, + "enableTrayDesc": { + "message": "Sistem tepsisinde her zaman simge göster." + }, + "startToTray": { + "message": "Tepsi simgesi olarak başlat" + }, + "startToTrayDesc": { + "message": "Uygulama ilk çalıştırıldığında sadece sistem tepsisinde simge olarak görünsün." + }, + "startToMenuBar": { + "message": "Menü çubuğunda başlat" + }, + "startToMenuBarDesc": { + "message": "Uygulama ilk çalıştırıldığında sadece menü çubuğunda simge olarak görünsün." + }, + "openAtLogin": { + "message": "Oturum açıldığında otomatik başlat" + }, + "openAtLoginDesc": { + "message": "Oturum açılınca Bitwarden masaüstü uygulamasını otomatik olarak başlat." + }, + "alwaysShowDock": { + "message": "Dock'ta her zaman göster" + }, + "alwaysShowDockDesc": { + "message": "Menü çubuğuna küçültüldüğünde bile Bitwarden simgesini Dock'ta göster." + }, + "confirmTrayTitle": { + "message": "Tepsiyi kapatmayı onaylayın" + }, + "confirmTrayDesc": { + "message": "Bu ayarı kapatırsanız tepsiyle ilgili diğer ayarlar da kapanır." + }, + "language": { + "message": "Dil" + }, + "languageDesc": { + "message": "Uygulama dilini değiştirin. Yeniden başlatma gerekir." + }, + "theme": { + "message": "Tema" + }, + "themeDesc": { + "message": "Uygulamanın renk temasını değiştir." + }, + "dark": { + "message": "Koyu", + "description": "Dark color" + }, + "light": { + "message": "Açık", + "description": "Light color" + }, + "copy": { + "message": "Kopyala", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Güncellemeleri denetle" + }, + "version": { + "message": "Sürüm $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Güncellemek için yeniden başlat" + }, + "restartToUpdateDesc": { + "message": "$VERSION_NUM$ sürümü yüklenmeye hazır. Yüklemeyi tamamlamak için uygulamayı yeniden başlatmanız gerekir. Uygulamayı yeniden başlatmak ve güncellemeyi yapmak istiyor musunuz?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Güncelleme mevcut" + }, + "updateAvailableDesc": { + "message": "Bir güncelleme bulundu. Şimdi yüklemek istiyor musunuz?" + }, + "restart": { + "message": "Yeniden başlat" + }, + "later": { + "message": "Sonra" + }, + "noUpdatesAvailable": { + "message": "Şu anda yüklenebilecek bir güncelleme yok. Son sürümü kullanıyorsunuz." + }, + "updateError": { + "message": "Güncelleme Hatası" + }, + "unknown": { + "message": "Bilinmiyor" + }, + "copyUsername": { + "message": "Kullanıcı adını kopyala" + }, + "copyNumber": { + "message": "Numarayı kopyala", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Güvenlik kodunu kopyala", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Premium üyelik" + }, + "premiumManage": { + "message": "Üyeliğimi yönet" + }, + "premiumManageAlert": { + "message": "Üyeliğinizi bitwarden.com web kasası üzerinden yönetebilirsiniz. Web sitesini ziyaret etmek ister misiniz?" + }, + "premiumRefresh": { + "message": "Üyeliğimi yenile" + }, + "premiumNotCurrentMember": { + "message": "Şu anda premium üyesi değilsiniz." + }, + "premiumSignUpAndGet": { + "message": "Premium üye olarak sahip olacağınız avantajlar:" + }, + "premiumSignUpStorage": { + "message": "Dosya ekleri için 1 GB şifrelenmiş depolama." + }, + "premiumSignUpTwoStep": { + "message": "YubiKey, FIDO U2F ve Duo gibi iki aşamalı giriş seçenekleri." + }, + "premiumSignUpReports": { + "message": "Kasanızı güvende tutmak için parola hijyeni, hesap sağlığı ve veri ihlali raporları." + }, + "premiumSignUpTotp": { + "message": "Kasanızdaki hesaplar için TOTP doğrulama kodu (2FA) oluşturucu." + }, + "premiumSignUpSupport": { + "message": "Öncelikli müşteri desteği." + }, + "premiumSignUpFuture": { + "message": "Ve ileride duyuracağımız tüm premium özellikler. Daha fazlası yakında!" + }, + "premiumPurchase": { + "message": "Premium satın al" + }, + "premiumPurchaseAlert": { + "message": "Premium üyeliği bitwarden.com web kasası üzerinden satın alabilirsiniz. Şimdi siteye gitmek ister misiniz?" + }, + "premiumCurrentMember": { + "message": "Premium üyesiniz!" + }, + "premiumCurrentMemberThanks": { + "message": "Bitwarden'ı desteklediğiniz için teşekkür ederiz." + }, + "premiumPrice": { + "message": "Bunların hepsi sadece yılda $PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Yenileme tamamlandı" + }, + "passwordHistory": { + "message": "Parola geçmişi" + }, + "clear": { + "message": "Temizle", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Listelenecek şifre yok." + }, + "undo": { + "message": "Geri al" + }, + "redo": { + "message": "Yinele" + }, + "cut": { + "message": "Kes", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Yapıştır", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Tümünü seç" + }, + "zoomIn": { + "message": "Yakınlaştır" + }, + "zoomOut": { + "message": "Uzaklaştır" + }, + "resetZoom": { + "message": "Yakınlaştırmayı sıfırla" + }, + "toggleFullScreen": { + "message": "Tam ekranı aç/kapat" + }, + "reload": { + "message": "Yenile" + }, + "toggleDevTools": { + "message": "Geliştirici araçlarını aç/kapat" + }, + "minimize": { + "message": "Küçült", + "description": "Minimize window" + }, + "zoom": { + "message": "Yakınlaştır" + }, + "bringAllToFront": { + "message": "Tümünü öne getir", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Bitwarden hakkında" + }, + "services": { + "message": "Hizmetler" + }, + "hideBitwarden": { + "message": "Bitwarden'ı gizle" + }, + "hideOthers": { + "message": "Diğerlerini gizle" + }, + "showAll": { + "message": "Tümünü göster" + }, + "quitBitwarden": { + "message": "Bitwarden'dan çık" + }, + "valueCopied": { + "message": "$VALUE$ kopyalandı", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Yardım" + }, + "window": { + "message": "Pencere" + }, + "checkPassword": { + "message": "Parolanız ele geçirilip geçirilmediğini kontrol edin." + }, + "passwordExposed": { + "message": "Bu parola, veri ihlallerinde $VALUE$ kere açığa çıkmış. Değiştirmenizi tavsiye ederiz.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Bilinen veri ihlallerinde bu parola bulunamadı. Güvenle kullanabilirsiniz." + }, + "baseDomain": { + "message": "Ana alan adı", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Alan adı", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Sunucu", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Tam" + }, + "startsWith": { + "message": "URI başlangıcı" + }, + "regEx": { + "message": "Düzenli ifade", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Eşleşme tespiti", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Varsayılan eşleşme tespiti", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Seçenekleri aç/kapat" + }, + "organization": { + "message": "Kuruluş", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Varsayılan" + }, + "exit": { + "message": "Çıkış" + }, + "showHide": { + "message": "Göster / gizle", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Tepsiye gizle" + }, + "alwaysOnTop": { + "message": "Her zaman üstte", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Güncelleme", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Parola güncelleme", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Kasayı dışa aktar" + }, + "fileFormat": { + "message": "Dosya biçimi" + }, + "warning": { + "message": "UYARI", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Kasayı dışa aktarmayı onaylayın" + }, + "exportWarningDesc": { + "message": "Dışa aktarılan dosyadaki verileriniz şifrelenmemiş olacak. Bu dosyayı güvensiz yöntemlerle (örn. e-posta) göndermemeli ve saklamamalısınız. İşiniz bittikten sonra dosyayı hemen silin." + }, + "encExportKeyWarningDesc": { + "message": "Dışa aktardığınız bu dosyadaki verileriniz, hesabınızın şifreleme anahtarıyla şifrelenir. Hesabınızın şifreleme anahtarını değiştirirseniz bu dosyanın şifresi çözülemez hale gelir, dolayısıyla dosyayı yeniden dışa aktarmanız gerekir." + }, + "encExportAccountWarningDesc": { + "message": "Hesap şifreleme anahtarları her Bitwarden kullanıcı hesabı için farklıdır. Dolayısıyla şifrelenmiş bir dışa aktarmayı başka bir hesapta içe aktaramazsınız." + }, + "noOrganizationsList": { + "message": "Herhangi bir kuruluşa dahil değilsiniz. Kuruluşlar, kayıtlarınızı diğer kullanıcılarla güvenli bir şekilde paylaşmanıza olanak verir." + }, + "noCollectionsInList": { + "message": "Listelenecek koleksiyon yok." + }, + "ownership": { + "message": "Sahip" + }, + "whoOwnsThisItem": { + "message": "Bu kaydın sahibi kim?" + }, + "strong": { + "message": "Güçlü", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "İyi", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Zayıf", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Zayıf ana parola" + }, + "weakMasterPasswordDesc": { + "message": "Seçtiğiniz ana parola zayıf. Bitwarden hesabınızı korumak için daha güçlü bir ana parola seçmenizi öneririz. Bu ana parolayı kullanmak istediğinizden emin misiniz?" + }, + "pin": { + "message": "PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Kilidi PIN koduyla aç" + }, + "setYourPinCode": { + "message": "Bitwarden'ı açarken kullanacağınız PIN kodunu belirleyin. Uygulamadan tamamen çıkış yaparsanız PIN ayarlarınız sıfırlanacaktır." + }, + "pinRequired": { + "message": "PIN kodu gereklidir." + }, + "invalidPin": { + "message": "Geçersiz PIN kodu." + }, + "unlockWithWindowsHello": { + "message": "Kilidi Windows Hello ile aç" + }, + "windowsHelloConsentMessage": { + "message": "Bitwarden için doğrulayın." + }, + "unlockWithTouchId": { + "message": "Kilidi Touch ID ile aç" + }, + "touchIdConsentMessage": { + "message": "kasanızın kilidini açma" + }, + "noAutoPromptWindowsHello": { + "message": "Açılışta Windows Hello doğrulaması isteme." + }, + "noAutoPromptTouchId": { + "message": "Açılışta Touch ID doğrulaması isteme." + }, + "lockWithMasterPassOnRestart": { + "message": "Yeniden başlatmada ana şifre ile kilitle" + }, + "preferences": { + "message": "Tercihler" + }, + "enableMenuBar": { + "message": "Menü çubuğu simgesini etkinleştir" + }, + "enableMenuBarDesc": { + "message": "Menü çubuğunda her zaman bir simge göster." + }, + "hideToMenuBar": { + "message": "Menü çubuğuna gizle" + }, + "selectOneCollection": { + "message": "En az bir koleksiyon seçmelisiniz." + }, + "premiumUpdated": { + "message": "Premium'a yükseltildiniz." + }, + "restore": { + "message": "Geri yükle" + }, + "premiumManageAlertAppStore": { + "message": "Aboneliğinizi App Store'dan yönetebilirsiniz. App Store'u şimdi ziyaret etmek ister misiniz?" + }, + "legal": { + "message": "Hukuki Bilgiler", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Hizmet Koşulları" + }, + "privacyPolicy": { + "message": "Gizlilik Politikası" + }, + "unsavedChangesConfirmation": { + "message": "Çıkmak istediğinize emin misiniz? Eğer şimdi çıkarsanız bilgileriniz kayıt edilmeyecektir." + }, + "unsavedChangesTitle": { + "message": "Kaydedilmemiş Değişiklikler" + }, + "clone": { + "message": "Klonla" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Bir ya da daha fazla kuruluş ilkesi oluşturucu ayarlarınızı etkiliyor." + }, + "vaultTimeoutAction": { + "message": "Kasa zaman aşımı eylemi" + }, + "vaultTimeoutActionLockDesc": { + "message": "Kilitli bir kasaya tekrar erişebilmeniz için ana şifrenizi tekrar girmeniz gerekir." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Çıkış yapılmış bir kasaya tekrardan erişmek için yeniden kimlik doğrulaması gerekir." + }, + "lock": { + "message": "Kilitle", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Çöp kutusu", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Çöp kutusunda ara" + }, + "permanentlyDeleteItem": { + "message": "Kaydı kalıcı olarak sil" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Bu ögeyi kalıcı olarak silmek istediğinizden emin misiniz?" + }, + "permanentlyDeletedItem": { + "message": "Kalıcı Olarak Silinmiş Öge" + }, + "restoreItem": { + "message": "Kaydı geri yükle" + }, + "restoreItemConfirmation": { + "message": "Bu ögeyi geri yüklemek istediğinizden emin misiniz?" + }, + "restoredItem": { + "message": "Kayıt geri yüklendi" + }, + "permanentlyDelete": { + "message": "Kalıcı olarak sil" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Oturumu kapatmak kasanıza olan tüm erişiminizi kaldırır ve zaman aşımından sonra çevrimiçi kimlik doğrulaması gerektirir. Bu ayarı kullanmak istediğinizden emin misiniz?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Zaman Aşımı Eylem Onayı" + }, + "enterpriseSingleSignOn": { + "message": "Kurumsal tek oturum açma" + }, + "setMasterPassword": { + "message": "Ana parolayı belirle" + }, + "ssoCompleteRegistration": { + "message": "SSO ile girişinizi tamamlamak için lütfen kasanıza erişirken kullanacağınız ana parolayı belirleyin." + }, + "newMasterPass": { + "message": "Yeni ana parola" + }, + "confirmNewMasterPass": { + "message": "Yeni ana parolayı onaylayın" + }, + "masterPasswordPolicyInEffect": { + "message": "Bir veya daha fazla kuruluş ilkesi gereğince ana parolanız aşağıdaki gereksinimleri karşılamalıdır:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum karmaşıklık puanı: $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum uzunluk: $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Bir veya daha fazla büyük harf içermeli" + }, + "policyInEffectLowercase": { + "message": "Bir veya daha fazla küçük harf içermeli" + }, + "policyInEffectNumbers": { + "message": "Bir veya daha fazla rakam içermeli" + }, + "policyInEffectSpecial": { + "message": "Şu özel karakterlerden birini veya daha fazlasını içermeli: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Yeni ana parolanız ilke gereksinimlerini karşılamıyor." + }, + "acceptPolicies": { + "message": "Bu kutuyu işaretleyerek aşağıdakileri kabul etmiş olursunuz:" + }, + "acceptPoliciesError": { + "message": "Hizmet Koşulları ve Gizlilik Politikası kabul edilmemiş." + }, + "enableBrowserIntegration": { + "message": "Tarayıcı entegrasyonunu etkinleştir" + }, + "enableBrowserIntegrationDesc": { + "message": "Tarayıcı entegrasyonu tarayıcıda biyometrik doğrulama için kullanılır." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Tarayıcı entegrasyonu desteklenmiyor" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Ne yazık ki tarayıcı entegrasyonu şu anda sadece Mac App Store sürümünde destekleniyor." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Tarayıcı entegrasyonu desteklenmiyor" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Maalesef tarayıcı entegrasyonu şimdilik Windows Store sürümünde desteklenmiyor." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Tarayıcı entegrasyonu için doğrulamayı zorunlu kıl" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Masaüstü uygulamanızla ve tarayıcınız arasında bağlantı kurulurken parmak izi ifadesi doğrulamasını zorunlu kılarak ek bir güvenlik önlemi alabilirsiniz. Bu ayar açıldıktan sonra her bağlantı kurulduğunda tekrar doğrulama yapmanız gerekir." + }, + "approve": { + "message": "Onayla" + }, + "verifyBrowserTitle": { + "message": "Tarayıcı bağlantısını doğrula" + }, + "verifyBrowserDesc": { + "message": "Lütfen gösterilen parmak izinin tarayıcı eklentisinde gösterilen parmak iziyle aynı olduğundan emin olun." + }, + "biometricsNotEnabledTitle": { + "message": "Biyometri etkin değil" + }, + "biometricsNotEnabledDesc": { + "message": "Tarayıcıda biyometriyi kullanmak için önce ayarlardan masaüstü biyometrisini etkinleştirilmeniz gerekir." + }, + "personalOwnershipSubmitError": { + "message": "Bir kuruluş ilkesi nedeniyle kişisel kasanıza hesap kaydetmeniz kısıtlanmış. Sahip seçeneğini bir kuruluş olarak değiştirin ve mevcut koleksiyonlar arasından seçim yapın." + }, + "hintEqualsPassword": { + "message": "Parola ipucunuz parolanızla aynı olamaz." + }, + "personalOwnershipPolicyInEffect": { + "message": "Bir kuruluş ilkesi sahiplik seçeneklerinizi etkiliyor." + }, + "allSends": { + "message": "Tüm Send'ler", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Dosya" + }, + "sendTypeText": { + "message": "Metin" + }, + "searchSends": { + "message": "Send'lerde ara", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Send'i düzenle", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Kasam" + }, + "text": { + "message": "Metin" + }, + "deletionDate": { + "message": "Silinme tarihi" + }, + "deletionDateDesc": { + "message": "Bu Send belirtilen tarih ve saatte kalıcı olacak silinecek.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Son kullanma tarihi" + }, + "expirationDateDesc": { + "message": "Bunu ayarlarsanız belirtilen tarih ve saatten sonra bu Send'e erişilemeyecektir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Maksimum erişim sayısı" + }, + "maxAccessCountDesc": { + "message": "Bunu ayarlarsanız maksimum erişim sayısına ulaşıldıktan sonra bu Send'e erişilemeyecektir.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Mevcut erişim sayısı" + }, + "disableSend": { + "message": "Kimsenin erişememesi için bu Send'i devre dışı bırak.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Kullanıcıların bu Send'e erişmek için parola girmelerini isteyebilirsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Bu Send ile ilgili özel notlar.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send bağlantısı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send bağlantısı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "Send'e erişirken varsayılan olarak metni gizle", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send oluşturuldu", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send düzenlendi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send silindi", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Yeni parola" + }, + "whatTypeOfSend": { + "message": "Bu ne tür bir Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Send oluştur", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Göndermek istediğiniz metin." + }, + "sendFileDesc": { + "message": "Göndermek istediğiniz dosya." + }, + "days": { + "message": "$DAYS$ gün", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 gün" + }, + "custom": { + "message": "Özel" + }, + "deleteSendConfirmation": { + "message": "Bu Send'i silmek istediğinizden emin misiniz?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Send linkini panoya kopyala", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Kaydettikten sonra bu Send'i paylaşma linkini panoya kopyala." + }, + "sendDisabled": { + "message": "Send devre dışı", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Bir kuruluş ilkesi nedeniyle yalnızca mevcut Send'leri silebilirsiniz.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Bağlantıyı kopyala" + }, + "disabled": { + "message": "Devre dışı" + }, + "maxAccessCountReached": { + "message": "Maksimum erişim sayısına ulaşıldı" + }, + "expired": { + "message": "Süresi doldu" + }, + "pendingDeletion": { + "message": "Silinmesi bekleniyor" + }, + "webAuthnAuthenticate": { + "message": "WebAuthn ile doğrula" + }, + "hideEmail": { + "message": "E-posta adresimi alıcılardan gizle." + }, + "sendOptionsPolicyInEffect": { + "message": "Bir veya daha fazla kuruluş ilkesi Send seçeneklerinizi etkiliyor." + }, + "emailVerificationRequired": { + "message": "E-posta doğrulaması gerekiyor" + }, + "emailVerificationRequiredDesc": { + "message": "Bu özelliği kullanmak için e-postanızı doğrulamalısınız." + }, + "passwordPrompt": { + "message": "Ana parolayı yeniden iste" + }, + "passwordConfirmation": { + "message": "Ana parola onayı" + }, + "passwordConfirmationDesc": { + "message": "Bu işleme devam etmek için lütfen ana parolanızı yeniden girin." + }, + "updatedMasterPassword": { + "message": "Ana parola güncellendi" + }, + "updateMasterPassword": { + "message": "Ana parolayı güncelle" + }, + "updateMasterPasswordWarning": { + "message": "Ana parolanız kuruluşunuzdaki bir yönetici tarafından yakın zamanda değiştirildi. Kasanıza erişmek için parolanızı güncellemelisiniz. Devam ettiğinizde oturumunuz kapanacak ve yeniden oturum açmanız gerekecektir. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir." + }, + "hours": { + "message": "Saat" + }, + "minutes": { + "message": "Dakika" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Kuruluş ilkeleriniz kasa zaman aşımınızı etkiliyor. İzin verilen maksimum kasa zaman aşımı $HOURS$ saat $MINUTES$ dakikadır", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Kasa zaman aşımınız, kuruluşunuz tarafından belirlenen kısıtlamaları aşıyor." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Otomatik eklenme" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Bu kuruluşun sizi otomatik olarak parola sıfırlamaya ekleyen bir ilkesi bulunmakta. Bu ilkeye eklenmek, kuruluş yöneticilerinin ana parolanızı değiştirebilmesini sağlar." + }, + "vaultExportDisabled": { + "message": "Kasayı dışa aktarma devre dışı" + }, + "personalVaultExportPolicyInEffect": { + "message": "Bir veya daha fazla kuruluş ilkesi, kişisel kasanızı dışa aktarmanızı engelliyor." + }, + "addAccount": { + "message": "Hesap ekle" + }, + "removeMasterPassword": { + "message": "Ana parolayı kaldır" + }, + "removedMasterPassword": { + "message": "Ana parola kaldırıldı." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ kendi barındırdığı bir anahtar sunucusuyla SSO kullanıyor. Bu kuruluşun üyelerinin artık ana parola kullanması gerekmiyor.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Kuruluştan ayrıl" + }, + "leaveOrganizationConfirmation": { + "message": "Bu kuruluştan ayrılmak istediğinizden emin misiniz?" + }, + "leftOrganization": { + "message": "Kuruluştan ayrıldınız." + }, + "ssoKeyConnectorUnavailable": { + "message": "Anahtar bağlayıcısına ulaşılamıyor, daha sonra yeniden deneyin." + }, + "lockAllVaults": { + "message": "Tüm kasaları kilitle" + }, + "accountLimitReached": { + "message": "Aynı anda 5'ten fazla hesapla oturum açamazsınız." + }, + "accountPreferences": { + "message": "Tercihler" + }, + "appPreferences": { + "message": "Uygulama ayarları (tüm hesaplar)" + }, + "accountSwitcherLimitReached": { + "message": "Hesap sınırına ulaştınız. Yeni hesap eklemek için hesaplardan birinden çıkış yapın." + }, + "settingsTitle": { + "message": "$EMAIL$ uygulama ayarları", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Hesabı değiştir" + }, + "options": { + "message": "Seçenekler" + }, + "sessionTimeout": { + "message": "Oturumunuzun süresi doldu. Lütfen geri dönüp yeniden giriş yapın." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Oluşturucu" + }, + "whatWouldYouLikeToGenerate": { + "message": "Ne oluşturmak istersiniz?" + }, + "passwordType": { + "message": "Parola türü" + }, + "regenerateUsername": { + "message": "Kullanıcı adını yeniden oluştur" + }, + "generateUsername": { + "message": "Kullanıcı adı oluştur" + }, + "usernameType": { + "message": "Kullanıcı adı türü" + }, + "plusAddressedEmail": { + "message": "Artı adresli e-posta" + }, + "plusAddressedEmailDesc": { + "message": "E-posta sağlayıcınızın alt adres özelliklerini kullanın." + }, + "catchallEmail": { + "message": "Catch-all e-posta" + }, + "catchallEmailDesc": { + "message": "Alan adınızın tüm iletileri yakalamaya ayarlanmış adresini kullanın." + }, + "random": { + "message": "Rasgele" + }, + "randomWord": { + "message": "Rastgele kelime" + }, + "websiteName": { + "message": "Web sitesi adı" + }, + "service": { + "message": "Servis" + } +} diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json new file mode 100644 index 0000000000..ef7c1c8809 --- /dev/null +++ b/apps/desktop/src/locales/uk/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Фільтри" + }, + "allItems": { + "message": "Всі елементи" + }, + "favorites": { + "message": "Обране" + }, + "types": { + "message": "Типи" + }, + "typeLogin": { + "message": "Вхід" + }, + "typeCard": { + "message": "Картка" + }, + "typeIdentity": { + "message": "Особисті дані" + }, + "typeSecureNote": { + "message": "Захищена нотатка" + }, + "folders": { + "message": "Теки" + }, + "collections": { + "message": "Збірки" + }, + "searchVault": { + "message": "Пошук" + }, + "addItem": { + "message": "Додати запис" + }, + "shared": { + "message": "Спільні" + }, + "share": { + "message": "Поділитися" + }, + "moveToOrganization": { + "message": "Перемістити до організації" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ переміщено до $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Виберіть організацію, до якої ви бажаєте перемістити цей запис. При переміщенні до організації власність запису передається тій організації. Ви більше не будете єдиним власником цього запису після переміщення." + }, + "attachments": { + "message": "Вкладення" + }, + "viewItem": { + "message": "Переглянути запис" + }, + "name": { + "message": "Назва" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "Новий URI" + }, + "username": { + "message": "Ім'я користувача" + }, + "password": { + "message": "Пароль" + }, + "passphrase": { + "message": "Парольна фраза" + }, + "editItem": { + "message": "Змінити запис" + }, + "emailAddress": { + "message": "Адреса е-пошти" + }, + "verificationCodeTotp": { + "message": "Код підтвердження (TOTP)" + }, + "website": { + "message": "Вебсайт" + }, + "notes": { + "message": "Нотатки" + }, + "customFields": { + "message": "Власні поля" + }, + "launch": { + "message": "Перейти" + }, + "copyValue": { + "message": "Копіювати значення", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Згортати при копіюванні в буфер обміну" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Згортати при копіюванні даних запису в буфер обміну." + }, + "toggleVisibility": { + "message": "Перемкнути видимість" + }, + "toggleCollapse": { + "message": "Згорнути/розгорнути", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Ім'я власника картки" + }, + "number": { + "message": "Номер" + }, + "brand": { + "message": "Тип картки" + }, + "expiration": { + "message": "Термін дії" + }, + "securityCode": { + "message": "Код безпеки" + }, + "identityName": { + "message": "Ім'я" + }, + "company": { + "message": "Компанія" + }, + "ssn": { + "message": "Номер соціального страхування" + }, + "passportNumber": { + "message": "Номер паспорта" + }, + "licenseNumber": { + "message": "Номер ліцензії" + }, + "email": { + "message": "Е-пошта" + }, + "phone": { + "message": "Телефон" + }, + "address": { + "message": "Адреса" + }, + "premiumRequired": { + "message": "Необхідний преміум статус" + }, + "premiumRequiredDesc": { + "message": "Для використання цієї функції необхідний преміум статус." + }, + "errorOccurred": { + "message": "Сталася помилка." + }, + "error": { + "message": "Помилка" + }, + "january": { + "message": "Січень" + }, + "february": { + "message": "Лютий" + }, + "march": { + "message": "Березень" + }, + "april": { + "message": "Квітень" + }, + "may": { + "message": "Травень" + }, + "june": { + "message": "Червень" + }, + "july": { + "message": "Липень" + }, + "august": { + "message": "Серпень" + }, + "september": { + "message": "Вересень" + }, + "october": { + "message": "Жовтень" + }, + "november": { + "message": "Листопад" + }, + "december": { + "message": "Грудень" + }, + "ex": { + "message": "зразок", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Звернення" + }, + "mr": { + "message": "Містер" + }, + "mrs": { + "message": "Місіс" + }, + "ms": { + "message": "Міс" + }, + "dr": { + "message": "Доктор" + }, + "expirationMonth": { + "message": "Місяць завершення" + }, + "expirationYear": { + "message": "Рік завершення" + }, + "select": { + "message": "Обрати" + }, + "other": { + "message": "Інше" + }, + "generatePassword": { + "message": "Генерувати пароль" + }, + "type": { + "message": "Тип" + }, + "firstName": { + "message": "Ім’я" + }, + "middleName": { + "message": "По батькові" + }, + "lastName": { + "message": "Прізвище" + }, + "fullName": { + "message": "Повне ім'я" + }, + "address1": { + "message": "Адреса 1" + }, + "address2": { + "message": "Адреса 2" + }, + "address3": { + "message": "Адреса 3" + }, + "cityTown": { + "message": "Місто / Селище" + }, + "stateProvince": { + "message": "Штат / Область" + }, + "zipPostalCode": { + "message": "Поштовий індекс" + }, + "country": { + "message": "Країна" + }, + "save": { + "message": "Зберегти" + }, + "cancel": { + "message": "Скасувати" + }, + "delete": { + "message": "Видалити" + }, + "favorite": { + "message": "Обране" + }, + "edit": { + "message": "Змінити" + }, + "authenticatorKeyTotp": { + "message": "Ключ авторизації (TOTP)" + }, + "folder": { + "message": "Тека" + }, + "newCustomField": { + "message": "Нове власне поле" + }, + "value": { + "message": "Значення" + }, + "dragToSort": { + "message": "Перетягніть, щоб відсортувати" + }, + "cfTypeText": { + "message": "Текст" + }, + "cfTypeHidden": { + "message": "Приховано" + }, + "cfTypeBoolean": { + "message": "Логічне значення" + }, + "cfTypeLinked": { + "message": "Пов'язано", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Пов'язане значення", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Видалити" + }, + "nameRequired": { + "message": "Потрібна назва." + }, + "addedItem": { + "message": "Запис додано" + }, + "editedItem": { + "message": "Запис змінено" + }, + "deleteItem": { + "message": "Видалити запис" + }, + "deleteFolder": { + "message": "Видалити теку" + }, + "deleteAttachment": { + "message": "Видалити файл" + }, + "deleteItemConfirmation": { + "message": "Ви дійсно хочете перенести до смітника?" + }, + "deletedItem": { + "message": "Запис перенесено до смітника" + }, + "overwritePasswordConfirmation": { + "message": "Ви дійсно хочете перезаписати поточний пароль?" + }, + "overwriteUsername": { + "message": "Перезаписати ім'я користувача" + }, + "overwriteUsernameConfirmation": { + "message": "Ви дійсно бажаєте перезаписати поточне ім'я користувача?" + }, + "noneFolder": { + "message": "Без теки", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Додати теку" + }, + "editFolder": { + "message": "Редагувати теку" + }, + "regeneratePassword": { + "message": "Генерувати новий" + }, + "copyPassword": { + "message": "Копіювати пароль" + }, + "copyUri": { + "message": "Копіювати URI" + }, + "copyVerificationCodeTotp": { + "message": "Копіювати код підтвердження (TOTP)" + }, + "length": { + "message": "Довжина" + }, + "numWords": { + "message": "Кількість слів" + }, + "wordSeparator": { + "message": "Розділювач слів" + }, + "capitalize": { + "message": "Великі літери", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Включити число" + }, + "close": { + "message": "Закрити" + }, + "minNumbers": { + "message": "Мінімум цифр" + }, + "minSpecial": { + "message": "Мінімум спеціальних символів", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Уникати неоднозначних символів" + }, + "searchCollection": { + "message": "Пошук в збірках" + }, + "searchFolder": { + "message": "Пошук в теці" + }, + "searchFavorites": { + "message": "Пошук в обраному" + }, + "searchType": { + "message": "Пошук за типом", + "description": "Search item type" + }, + "newAttachment": { + "message": "Додати нове вкладення" + }, + "deletedAttachment": { + "message": "Вкладення видалено" + }, + "deleteAttachmentConfirmation": { + "message": "Ви дійсно хочете видалити це вкладення?" + }, + "attachmentSaved": { + "message": "Вкладення збережено." + }, + "file": { + "message": "Файл" + }, + "selectFile": { + "message": "Оберіть файл." + }, + "maxFileSize": { + "message": "Максимальний розмір файлу 500 Мб." + }, + "updateKey": { + "message": "Ви не можете використовувати цю функцію доки не оновите свій ключ шифрування." + }, + "editedFolder": { + "message": "Тека відредагована" + }, + "addedFolder": { + "message": "Додано теку" + }, + "deleteFolderConfirmation": { + "message": "Ви дійсно хочете видалити цю теку?" + }, + "deletedFolder": { + "message": "Теку видалено" + }, + "loginOrCreateNewAccount": { + "message": "Для доступу до сховища увійдіть в обліковий запис, або створіть новий." + }, + "createAccount": { + "message": "Створити обліковий запис" + }, + "logIn": { + "message": "Увійти" + }, + "submit": { + "message": "Відправити" + }, + "masterPass": { + "message": "Головний пароль" + }, + "masterPassDesc": { + "message": "Головний пароль використовується для доступу до вашого сховища. Дуже важливо, щоб ви запам'ятали його. Якщо ви забудете головний пароль, його неможливо буде відновити." + }, + "masterPassHintDesc": { + "message": "Якщо ви забудете головний пароль, підказка може допомогти вам згадати його." + }, + "reTypeMasterPass": { + "message": "Введіть головний пароль ще раз" + }, + "masterPassHint": { + "message": "Підказка для головного пароля (необов'язково)" + }, + "settings": { + "message": "Налаштування" + }, + "passwordHint": { + "message": "Підказка для пароля" + }, + "enterEmailToGetHint": { + "message": "Введіть свою адресу е-пошти, щоб отримати підказку для головного пароля." + }, + "getMasterPasswordHint": { + "message": "Отримати підказку для головного пароля" + }, + "emailRequired": { + "message": "Необхідно вказати адресу е-пошти." + }, + "invalidEmail": { + "message": "Неправильна адреса е-пошти." + }, + "masterPassRequired": { + "message": "Потрібен головний пароль." + }, + "masterPassLength": { + "message": "Довжина головного пароля повинна бути не менше 8 символів." + }, + "masterPassDoesntMatch": { + "message": "Підтвердження головного пароля не збігається." + }, + "newAccountCreated": { + "message": "Ваш обліковий запис створений! Тепер ви можете увійти." + }, + "masterPassSent": { + "message": "Ми надіслали вам лист з підказкою для головного пароля." + }, + "unexpectedError": { + "message": "Сталася неочікувана помилка." + }, + "itemInformation": { + "message": "Інформація про запис" + }, + "noItemsInList": { + "message": "Немає записів." + }, + "sendVerificationCode": { + "message": "Надіслати код підтвердження е-поштою" + }, + "sendCode": { + "message": "Надіслати код" + }, + "codeSent": { + "message": "Код надіслано" + }, + "verificationCode": { + "message": "Код підтвердження" + }, + "confirmIdentity": { + "message": "Підтвердьте свої облікові дані для продовження." + }, + "verificationCodeRequired": { + "message": "Потрібний код підтвердження." + }, + "invalidVerificationCode": { + "message": "Недійсний код підтвердження" + }, + "continue": { + "message": "Продовжити" + }, + "enterVerificationCodeApp": { + "message": "Введіть 6-значний код підтвердження з програми авторизації." + }, + "enterVerificationCodeEmail": { + "message": "Введіть 6-значний код підтвердження, надісланий на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Код підтвердження надіслано на $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Запам'ятати мене" + }, + "sendVerificationCodeEmailAgain": { + "message": "Надіслати код підтвердження ще раз" + }, + "useAnotherTwoStepMethod": { + "message": "Інший спосіб двоетапної перевірки" + }, + "insertYubiKey": { + "message": "Вставте свій YubiKey в USB порт комп'ютера, потім торкніться цієї кнопки." + }, + "insertU2f": { + "message": "Вставте свій ключ безпеки в USB порт комп'ютера. Якщо в нього є кнопка, натисніть її." + }, + "recoveryCodeDesc": { + "message": "Втратили доступ до всіх провайдерів двоетапної перевірки? Скористайтеся кодом відновлення, щоб вимкнути двоетапну перевірку для свого облікового запису." + }, + "recoveryCodeTitle": { + "message": "Код відновлення" + }, + "authenticatorAppTitle": { + "message": "Програма авторизації" + }, + "authenticatorAppDesc": { + "message": "Використовуйте програму авторизації (наприклад, Authy або Google Authenticator), щоб генерувати тимчасові коди підтвердження.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Ключ безпеки YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Використовуйте YubiKey для доступу до сховища. Працює з YubiKey 4, 4 Nano, 4C та пристроями NEO." + }, + "duoDesc": { + "message": "Авторизуйтесь за допомогою Duo Security з використанням мобільного додатку Duo Mobile, SMS, телефонного виклику, або ключа безпеки U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Авторизуйтесь за допомогою Duo Security для вашої організації з використанням мобільного додатку Duo Mobile, SMS, телефонного виклику, або ключа безпеки U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Використовуйте будь-який ключ безпеки WebAuthn для доступу до сховища." + }, + "emailTitle": { + "message": "Е-пошта" + }, + "emailDesc": { + "message": "Коди підтвердження будуть надсилатися на вашу пошту." + }, + "loginUnavailable": { + "message": "Вхід недоступний" + }, + "noTwoStepProviders": { + "message": "Для цього облікового запису увімкнено двоетапну перевірку. Однак, жоден з налаштованих провайдерів двоетапної перевірки не підтримується цим пристроєм." + }, + "noTwoStepProviders2": { + "message": "Додайте інших провайдерів, які краще підтримуються різними пристроями, наприклад програма авторизації." + }, + "twoStepOptions": { + "message": "Налаштування двоетапної перевірки" + }, + "selfHostedEnvironment": { + "message": "Середовище власного хостингу" + }, + "selfHostedEnvironmentFooter": { + "message": "Вкажіть основну URL-адресу вашого локально розміщеного встановлення Bitwarden." + }, + "customEnvironment": { + "message": "Власне середовище" + }, + "customEnvironmentFooter": { + "message": "Для досвідчених користувачів. Ви можете вказати основну URL-адресу окремо для кожної служби." + }, + "baseUrl": { + "message": "URL-адреса сервера" + }, + "apiUrl": { + "message": "URL-адреса API" + }, + "webVaultUrl": { + "message": "URL-адреса сервера веб сховища" + }, + "identityUrl": { + "message": "URL-адреса сервера ідентифікації" + }, + "notificationsUrl": { + "message": "URL сервера сповіщень" + }, + "iconsUrl": { + "message": "URL-адреса сервера піктограм" + }, + "environmentSaved": { + "message": "URL-адреси середовища збережено." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Так" + }, + "no": { + "message": "Ні" + }, + "overwritePassword": { + "message": "Перезаписати пароль" + }, + "learnMore": { + "message": "Докладніше" + }, + "featureUnavailable": { + "message": "Функція недоступна" + }, + "loggedOut": { + "message": "Ви вийшли" + }, + "loginExpired": { + "message": "Тривалість вашого сеансу завершилась." + }, + "logOutConfirmation": { + "message": "Ви дійсно хочете вийти?" + }, + "logOut": { + "message": "Вийти" + }, + "addNewLogin": { + "message": "Додати новий запис" + }, + "addNewItem": { + "message": "Додати новий елемент" + }, + "addNewFolder": { + "message": "Додати нову теку" + }, + "view": { + "message": "Перегляд" + }, + "account": { + "message": "Обліковий запис" + }, + "loading": { + "message": "Завантаження..." + }, + "lockVault": { + "message": "Заблокувати сховище" + }, + "passwordGenerator": { + "message": "Генератор паролів" + }, + "contactUs": { + "message": "Зв'язатися з нами" + }, + "getHelp": { + "message": "Отримати допомогу" + }, + "fileBugReport": { + "message": "Повідомити про помилку" + }, + "blog": { + "message": "Блог" + }, + "followUs": { + "message": "Слідкуйте за нами" + }, + "syncVault": { + "message": "Синхронізувати сховище" + }, + "changeMasterPass": { + "message": "Змінити головний пароль" + }, + "changeMasterPasswordConfirmation": { + "message": "Ви можете змінити головний пароль в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "fingerprintPhrase": { + "message": "Фраза відбитку", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Фраза відбитку вашого облікового запису", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Перейти у веб сховище" + }, + "getMobileApp": { + "message": "Отримати мобільний додаток" + }, + "getBrowserExtension": { + "message": "Отримати розширення браузера" + }, + "syncingComplete": { + "message": "Синхронізацію завершено" + }, + "syncingFailed": { + "message": "Не вдалося синхронізувати" + }, + "yourVaultIsLocked": { + "message": "Сховище заблоковано. Пройдіть ідентифікацію для продовження." + }, + "unlock": { + "message": "Розблокувати" + }, + "loggedInAsOn": { + "message": "Ви увійшли як $EMAIL$ на $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Неправильний головний пароль" + }, + "twoStepLoginConfirmation": { + "message": "Двоетапна перевірка робить ваш обліковий запис більш захищеним, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете увімкнути двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "twoStepLogin": { + "message": "Двоетапна перевірка" + }, + "vaultTimeout": { + "message": "Час очікування сховища" + }, + "vaultTimeoutDesc": { + "message": "Оберіть дію, яка виконається після завершення часу очікування вашого сховища." + }, + "immediately": { + "message": "Негайно" + }, + "tenSeconds": { + "message": "10 секунд" + }, + "twentySeconds": { + "message": "20 секунд" + }, + "thirtySeconds": { + "message": "30 секунд" + }, + "oneMinute": { + "message": "1 хвилина" + }, + "twoMinutes": { + "message": "2 хвилини" + }, + "fiveMinutes": { + "message": "5 хвилин" + }, + "fifteenMinutes": { + "message": "15 хвилин" + }, + "thirtyMinutes": { + "message": "30 хвилин" + }, + "oneHour": { + "message": "1 година" + }, + "fourHours": { + "message": "4 години" + }, + "onIdle": { + "message": "При бездіяльності системи" + }, + "onSleep": { + "message": "При переході в режим сну" + }, + "onLocked": { + "message": "При блокуванні системи" + }, + "onRestart": { + "message": "При перезапуску" + }, + "never": { + "message": "Ніколи" + }, + "security": { + "message": "Безпека" + }, + "clearClipboard": { + "message": "Очистити буфер обміну", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Автоматично очищати скопійовані значення з буфера обміну.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Вимкнути піктограми вебсайтів" + }, + "disableFaviconDesc": { + "message": "Впізнавані піктограми вебсайтів додаються біля кожного запису вашого сховища." + }, + "enableMinToTray": { + "message": "Згортати до системного лотка" + }, + "enableMinToTrayDesc": { + "message": "Згортати вікно до системного лотка замість панелі інструментів." + }, + "enableMinToMenuBar": { + "message": "Згортати до панелі завдань" + }, + "enableMinToMenuBarDesc": { + "message": "При згортанні вікна, показувати піктограму в панелі завдань." + }, + "enableCloseToTray": { + "message": "Закривати до системного лотка" + }, + "enableCloseToTrayDesc": { + "message": "При закритті вікна згортати в системний лоток." + }, + "enableCloseToMenuBar": { + "message": "Закривати до панелі завдань" + }, + "enableCloseToMenuBarDesc": { + "message": "При закритті вікна, показувати піктограму в панелі завдань." + }, + "enableTray": { + "message": "Увімкнути піктограму в системному лотку" + }, + "enableTrayDesc": { + "message": "Завжди показувати піктограму в системному лотку." + }, + "startToTray": { + "message": "Запускати в згорнутому вигляді" + }, + "startToTrayDesc": { + "message": "При першому запуску програми відображатиметься лише піктограма в системному лотку." + }, + "startToMenuBar": { + "message": "Запускати в панелі завдань" + }, + "startToMenuBarDesc": { + "message": "При запуску програми показувати лише піктограму в панелі завдань." + }, + "openAtLogin": { + "message": "Запускати автоматично при вході" + }, + "openAtLoginDesc": { + "message": "Запускати програму Bitwarden для комп'ютера автоматично при вході в систему." + }, + "alwaysShowDock": { + "message": "Завжди показувати в панелі Dock" + }, + "alwaysShowDockDesc": { + "message": "Показувати піктограму Bitwarden в панелі Dock навіть при згортанні до панелі завдань." + }, + "confirmTrayTitle": { + "message": "Підтвердити вимкнення в панелі стану" + }, + "confirmTrayDesc": { + "message": "Вимкнення цього параметра також вимкне усі інші пов'язані налаштування." + }, + "language": { + "message": "Мова" + }, + "languageDesc": { + "message": "Змінити мову програми. Потрібен перезапуск." + }, + "theme": { + "message": "Тема" + }, + "themeDesc": { + "message": "Змінити колірну тему програми." + }, + "dark": { + "message": "Темна", + "description": "Dark color" + }, + "light": { + "message": "Світла", + "description": "Light color" + }, + "copy": { + "message": "Копіювати", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Перевірити оновлення" + }, + "version": { + "message": "Версія $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Перезапустити для оновлення" + }, + "restartToUpdateDesc": { + "message": "Версія $VERSION_NUM$ готова до встановлення. Для завершення встановлення ви повинні перезапустити програму. Хочете зробити це зараз?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Доступне оновлення" + }, + "updateAvailableDesc": { + "message": "Знайдено оновлення. Хочете завантажити його зараз?" + }, + "restart": { + "message": "Перезапустити" + }, + "later": { + "message": "Пізніше" + }, + "noUpdatesAvailable": { + "message": "Оновлення наразі відсутні. Ви використовуєте найновішу версію." + }, + "updateError": { + "message": "Помилка оновлення" + }, + "unknown": { + "message": "Невідомо" + }, + "copyUsername": { + "message": "Копіювати ім'я користувача" + }, + "copyNumber": { + "message": "Копіювати номер", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Копіювати код безпеки", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Преміум статус" + }, + "premiumManage": { + "message": "Керувати статусом" + }, + "premiumManageAlert": { + "message": "Ви можете керувати своїм статусом у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "premiumRefresh": { + "message": "Оновити статус" + }, + "premiumNotCurrentMember": { + "message": "Зараз у вас немає преміум-статусу." + }, + "premiumSignUpAndGet": { + "message": "Підпишіться на преміум-статус і отримайте:" + }, + "premiumSignUpStorage": { + "message": "1 ГБ зашифрованого сховища для файлів." + }, + "premiumSignUpTwoStep": { + "message": "Додаткові можливості двоетапної перевірки, наприклад, YubiKey, FIDO U2F та Duo." + }, + "premiumSignUpReports": { + "message": "Гігієна паролів, здоров'я облікового запису, а також звіти про вразливості даних, щоб зберігати ваше сховище в безпеці." + }, + "premiumSignUpTotp": { + "message": "Генератор коду авторизації TOTP (2FA) для входу в сховище." + }, + "premiumSignUpSupport": { + "message": "Пріоритетну технічну підтримку." + }, + "premiumSignUpFuture": { + "message": "Всі майбутні функції преміум статусу. Їх буде більше!" + }, + "premiumPurchase": { + "message": "Придбати преміум" + }, + "premiumPurchaseAlert": { + "message": "Ви можете придбати преміум статус у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + }, + "premiumCurrentMember": { + "message": "У вас преміум статус!" + }, + "premiumCurrentMemberThanks": { + "message": "Дякуємо за підтримку Bitwarden." + }, + "premiumPrice": { + "message": "Всього лише $PRICE$ / за рік!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Оновлення завершено" + }, + "passwordHistory": { + "message": "Історія паролів" + }, + "clear": { + "message": "Стерти", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Немає паролів." + }, + "undo": { + "message": "Повернути" + }, + "redo": { + "message": "Повторити" + }, + "cut": { + "message": "Вирізати", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Вставити", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Вибрати все" + }, + "zoomIn": { + "message": "Збільшити" + }, + "zoomOut": { + "message": "Зменшити" + }, + "resetZoom": { + "message": "Скинути масштаб" + }, + "toggleFullScreen": { + "message": "Повноекранний режим" + }, + "reload": { + "message": "Перезавантажити" + }, + "toggleDevTools": { + "message": "Інструменти розробника" + }, + "minimize": { + "message": "Згорнути", + "description": "Minimize window" + }, + "zoom": { + "message": "Масштаб" + }, + "bringAllToFront": { + "message": "Все на передній план", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Про Bitwarden" + }, + "services": { + "message": "Сервіси" + }, + "hideBitwarden": { + "message": "Приховати Bitwarden" + }, + "hideOthers": { + "message": "Приховати інше" + }, + "showAll": { + "message": "Показати все" + }, + "quitBitwarden": { + "message": "Вийти з Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ скопійовано", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Допомога" + }, + "window": { + "message": "Вікно" + }, + "checkPassword": { + "message": "Перевірити чи пароль було викрито." + }, + "passwordExposed": { + "message": "Цей пароль було викрито $VALUE$ разів з витоком даних. Вам слід його змінити.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Цей пароль не було знайдено у жодних відомих витоках даних. Його можна безпечно використовувати." + }, + "baseDomain": { + "message": "Основний домен", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Ім'я домену", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Вузол", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Точно" + }, + "startsWith": { + "message": "Починається з" + }, + "regEx": { + "message": "Звичайний вираз", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Виявлення збігів", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Типове виявлення збігів", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Перемкнути налаштування" + }, + "organization": { + "message": "Організація", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Типово" + }, + "exit": { + "message": "Вийти" + }, + "showHide": { + "message": "Показати / Приховати", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Згорнути в лоток" + }, + "alwaysOnTop": { + "message": "Завжди вгорі", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Оновлено", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Пароль оновлено", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Експорт сховища" + }, + "fileFormat": { + "message": "Формат файлу" + }, + "warning": { + "message": "ПОПЕРЕДЖЕННЯ", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Підтвердити експорт сховища" + }, + "exportWarningDesc": { + "message": "Експортовані дані вашого сховища знаходяться в незашифрованому вигляді. Вам не слід зберігати чи надсилати їх через незахищені канали (наприклад, е-поштою). Після використання негайно видаліть їх." + }, + "encExportKeyWarningDesc": { + "message": "Цей експорт шифрує ваші дані за допомогою ключа шифрування облікового запису. Якщо ви коли-небудь оновите ключ шифрування облікового запису, ви повинні виконати експорт знову, оскільки не зможете розшифрувати цей файл експорту." + }, + "encExportAccountWarningDesc": { + "message": "Ключі шифрування унікальні для кожного облікового запису користувача Bitwarden, тому ви не можете імпортувати зашифрований експорт до іншого облікового запису." + }, + "noOrganizationsList": { + "message": "Ви не входите до жодної організації. Організації дозволяють безпечно обмінюватися елементами з іншими користувачами." + }, + "noCollectionsInList": { + "message": "Немає збірок." + }, + "ownership": { + "message": "Власник" + }, + "whoOwnsThisItem": { + "message": "Хто є власником цього елемента?" + }, + "strong": { + "message": "Надійний", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Хороший", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Слабкий", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Слабкий головний пароль" + }, + "weakMasterPasswordDesc": { + "message": "Обраний вами головний пароль є слабким. Для належного захисту свого облікового запису Bitwarden, вам слід використовувати надійний головний пароль (або парольну фразу). Ви впевнені, що хочете використати цей пароль?" + }, + "pin": { + "message": "PIN-код", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Розблокування з PIN-кодом" + }, + "setYourPinCode": { + "message": "Встановіть PIN-код для розблокування Bitwarden. Налаштування PIN-коду будуть скинуті, якщо ви коли-небудь повністю вийдете з програми." + }, + "pinRequired": { + "message": "Необхідний PIN-код." + }, + "invalidPin": { + "message": "Неправильний PIN-код." + }, + "unlockWithWindowsHello": { + "message": "Розблокувати з Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Перевірити на Bitwarden." + }, + "unlockWithTouchId": { + "message": "Розблокувати з Touch ID" + }, + "touchIdConsentMessage": { + "message": "розблокувати сховище" + }, + "noAutoPromptWindowsHello": { + "message": "Не запитувати Windows Hello під час запуску." + }, + "noAutoPromptTouchId": { + "message": "Не запитувати Touch ID під час запуску." + }, + "lockWithMasterPassOnRestart": { + "message": "Блокувати головним паролем при перезапуску" + }, + "preferences": { + "message": "Налаштування" + }, + "enableMenuBar": { + "message": "Увімкнути піктограму в панелі завдань" + }, + "enableMenuBarDesc": { + "message": "Завжди показувати піктограму в панелі завдань." + }, + "hideToMenuBar": { + "message": "Приховувати до панелі завдань" + }, + "selectOneCollection": { + "message": "Ви повинні обрати принаймні одну збірку." + }, + "premiumUpdated": { + "message": "Ви оновилися до версії premium." + }, + "restore": { + "message": "Відновити" + }, + "premiumManageAlertAppStore": { + "message": "Ви можете керувати своєю передплатою з App Store. Хочете перейти в App Store зараз?" + }, + "legal": { + "message": "Юридична інформація", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Умови користування" + }, + "privacyPolicy": { + "message": "Політика приватності" + }, + "unsavedChangesConfirmation": { + "message": "Ви справді хочете піти? Якщо ви зараз підете, вашу поточну інформацію не буде збережено." + }, + "unsavedChangesTitle": { + "message": "Є незбережені зміни" + }, + "clone": { + "message": "Клонувати" + }, + "passwordGeneratorPolicyInEffect": { + "message": "На параметри генератора впливають одна чи декілька політик організації." + }, + "vaultTimeoutAction": { + "message": "Дія після часу очікування сховища" + }, + "vaultTimeoutActionLockDesc": { + "message": "Щоб відновити доступ до заблокованого сховища, необхідно повторно ввести головний пароль." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Щоб відновити доступ до сховища після виходу, необхідно повторно авторизуватись." + }, + "lock": { + "message": "Блокувати", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Смітник", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Пошук у смітнику" + }, + "permanentlyDeleteItem": { + "message": "Остаточно видалити запис" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Ви дійсно хочете остаточно видалити цей запис?" + }, + "permanentlyDeletedItem": { + "message": "Запис остаточно видалено" + }, + "restoreItem": { + "message": "Відновити запис" + }, + "restoreItemConfirmation": { + "message": "Ви дійсно хочете відновити цей запис?" + }, + "restoredItem": { + "message": "Запис відновлено" + }, + "permanentlyDelete": { + "message": "Остаточно видалити" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Вихід скасує всі права доступу до вашого сховища і вимагатиме авторизації після завершення часу очікування. Ви дійсно хочете використати цей параметр?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Підтвердження дії часу очікування" + }, + "enterpriseSingleSignOn": { + "message": "Єдиний корпоративний вхід (SSO)" + }, + "setMasterPassword": { + "message": "Встановити головний пароль" + }, + "ssoCompleteRegistration": { + "message": "Щоб завершити налаштування входу з SSO, встановіть головний пароль для доступу і захисту сховища." + }, + "newMasterPass": { + "message": "Новий головний пароль" + }, + "confirmNewMasterPass": { + "message": "Підтвердьте новий головний пароль" + }, + "masterPasswordPolicyInEffect": { + "message": "Одна або декілька політик організації вимагають дотримання таких вимог для головного пароля:" + }, + "policyInEffectMinComplexity": { + "message": "Мінімальна оцінка складності $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Мінімальна довжина $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Наявність одного чи більше символів верхнього регістру" + }, + "policyInEffectLowercase": { + "message": "Наявність одного чи більше символів нижнього регістру" + }, + "policyInEffectNumbers": { + "message": "Наявність однієї чи більше цифр" + }, + "policyInEffectSpecial": { + "message": "Наявність одного чи більше таких спеціальних символів $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Ваш новий головний пароль не задовольняє вимоги політики." + }, + "acceptPolicies": { + "message": "Позначивши цей прапорець, ви погоджуєтеся з:" + }, + "acceptPoliciesError": { + "message": "Умови користування та політика приватності не погоджені." + }, + "enableBrowserIntegration": { + "message": "Увімкнути інтеграцію з браузером" + }, + "enableBrowserIntegrationDesc": { + "message": "Інтеграція з браузером використовується для біометрії в браузері." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Інтеграція з браузером не підтримується" + }, + "browserIntegrationMasOnlyDesc": { + "message": "На жаль, зараз інтеграція з браузером підтримується лише у версії для Mac з App Store." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Інтеграція з браузером не підтримується" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "На жаль, зараз інтеграція з браузером не підтримується у версії з Windows Store." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Вимагати підтвердження для інтеграції з браузером" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Увімкніть додатковий рівень безпеки, вимагаючи перевірку фрази відбитка при встановленні зв'язку між програмою на комп'ютері та браузером. Якщо увімкнено, вимагатиметься втручання користувача і перевірка щоразу при встановленні зв'язку." + }, + "approve": { + "message": "Схвалити" + }, + "verifyBrowserTitle": { + "message": "Перевірка з'єднання з браузером" + }, + "verifyBrowserDesc": { + "message": "Переконайтеся, що показаний відбиток ідентичний відбитку в розширенні браузера." + }, + "biometricsNotEnabledTitle": { + "message": "Біометрію не увімкнено" + }, + "biometricsNotEnabledDesc": { + "message": "Для активації біометрії в браузері необхідно спершу увімкнути біометрію в програмі на комп'ютері." + }, + "personalOwnershipSubmitError": { + "message": "У зв'язку з корпоративною політикою, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." + }, + "hintEqualsPassword": { + "message": "Підказка для пароля не може бути такою самою, як ваш пароль." + }, + "personalOwnershipPolicyInEffect": { + "message": "Політика організації впливає на ваші параметри власності." + }, + "allSends": { + "message": "Усі відправлення", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Файл" + }, + "sendTypeText": { + "message": "Текст" + }, + "searchSends": { + "message": "Пошук відправлень", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Змінити відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Моє сховище" + }, + "text": { + "message": "Текст" + }, + "deletionDate": { + "message": "Дата видалення" + }, + "deletionDateDesc": { + "message": "Відправлення буде остаточно видалено у вказаний час.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Дата завершення" + }, + "expirationDateDesc": { + "message": "Якщо встановлено, термін дії цього відправлення завершиться у вказаний час.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Максимальна кількість доступів" + }, + "maxAccessCountDesc": { + "message": "Якщо встановлено, користувачі більше не зможуть отримати доступ до цього відправлення після досягнення максимальної кількості доступів.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Поточна кількість доступів" + }, + "disableSend": { + "message": "Деактивувати це відправлення для скасування доступу до нього.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "За бажанням вимагати пароль в користувачів для доступу до цього відправлення.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Особисті нотатки про це відправлення.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Посилання на відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Посилання на відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "При доступі до відправлення типово приховувати текст", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Відправлення створено", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Відправлення змінено", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Відправлення видалено", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Новий пароль" + }, + "whatTypeOfSend": { + "message": "Який це тип відправлення?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Створити відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Текст, який ви хочете відправити." + }, + "sendFileDesc": { + "message": "Файл, який ви хочете відправити." + }, + "days": { + "message": "$DAYS$ днів", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 день" + }, + "custom": { + "message": "Спеціальний" + }, + "deleteSendConfirmation": { + "message": "Ви дійсно хочете видалити це відправлення?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Копіювати посилання на відправлення", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Копіювати посилання, щоб поділитися відправленням після збереження." + }, + "sendDisabled": { + "message": "Відправлення вимкнено", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "У зв'язку з політикою компанії, ви можете лише видалити наявне відправлення.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Копіювати посилання" + }, + "disabled": { + "message": "Вимкнено" + }, + "maxAccessCountReached": { + "message": "Досягнуто максимальну кількість доступів" + }, + "expired": { + "message": "Термін дії завершився" + }, + "pendingDeletion": { + "message": "Очікується видалення" + }, + "webAuthnAuthenticate": { + "message": "Авторизація WebAuthn" + }, + "hideEmail": { + "message": "Приховувати мою адресу електронної пошти від отримувачів." + }, + "sendOptionsPolicyInEffect": { + "message": "На параметри відправлень впливають одна чи декілька політик організації." + }, + "emailVerificationRequired": { + "message": "Необхідно підтвердити е-пошту" + }, + "emailVerificationRequiredDesc": { + "message": "Для використання цієї функції необхідно підтвердити електронну пошту." + }, + "passwordPrompt": { + "message": "Повторний запит головного пароля" + }, + "passwordConfirmation": { + "message": "Підтвердження головного пароля" + }, + "passwordConfirmationDesc": { + "message": "Ця дія захищена. Щоб продовжити, повторно введіть головний пароль." + }, + "updatedMasterPassword": { + "message": "Головний пароль оновлено" + }, + "updateMasterPassword": { + "message": "Оновити головний пароль" + }, + "updateMasterPasswordWarning": { + "message": "Ваш головний пароль нещодавно був змінений адміністратором організації. Щоб отримати доступ до сховища, ви повинні оновити його зараз. Продовживши, ви вийдете з поточного сеансу, після чого необхідно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." + }, + "hours": { + "message": "Годин" + }, + "minutes": { + "message": "Хвилин" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Політики вашої організації впливають на час очікування сховища. Максимальний дозволений час очікування сховища $HOURS$ годин, $MINUTES$ хвилин", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Час очікування сховища перевищує обмеження, встановлені вашою організацією." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Автоматичне розгортання" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "Ця організація має корпоративну політику, яка автоматично розгортає вас на скидання пароля. Розгортання дозволятиме адміністраторам організації змінювати ваш головний пароль." + }, + "vaultExportDisabled": { + "message": "Експорт сховища вимкнено" + }, + "personalVaultExportPolicyInEffect": { + "message": "Одна чи декілька організаційних політик не дозволяють вам експортувати особисте сховище." + }, + "addAccount": { + "message": "Додати обліковий запис" + }, + "removeMasterPassword": { + "message": "Вилучити головний пароль" + }, + "removedMasterPassword": { + "message": "Головний пароль вилучено." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ використовує SSO з власним сервером ключів. Головний пароль для учасників цієї організації більше не вимагається.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Покинути організацію" + }, + "leaveOrganizationConfirmation": { + "message": "Ви справді хочете покинути цю організацію?" + }, + "leftOrganization": { + "message": "Ви покинули організацію." + }, + "ssoKeyConnectorUnavailable": { + "message": "Не вдається отримати доступ до Key Connector. Спробуйте знову пізніше." + }, + "lockAllVaults": { + "message": "Заблокувати всі сховища" + }, + "accountLimitReached": { + "message": "Можна увійти не більше, ніж у 5 облікових записів одночасно." + }, + "accountPreferences": { + "message": "Налаштування" + }, + "appPreferences": { + "message": "Налаштування програми (Усі облікові записи)" + }, + "accountSwitcherLimitReached": { + "message": "Досягнуто обмеження облікового запису. Вийдіть, щоб додати інший обліковий запис." + }, + "settingsTitle": { + "message": "Налаштування програми для $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Перемкнути обліковий запис" + }, + "options": { + "message": "Налаштування" + }, + "sessionTimeout": { + "message": "Час вашого сеансу завершився. Поверніться назад і спробуйте увійти знову." + }, + "exportingPersonalVaultTitle": { + "message": "Експортування особистого сховища" + }, + "exportingPersonalVaultDescription": { + "message": "Будуть експортовані лише записи особистого сховища, пов'язані з $EMAIL$. Записи сховища організації не буде включено.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Генератор" + }, + "whatWouldYouLikeToGenerate": { + "message": "Що ви бажаєте згенерувати?" + }, + "passwordType": { + "message": "Тип пароля" + }, + "regenerateUsername": { + "message": "Повторно генерувати ім'я користувача" + }, + "generateUsername": { + "message": "Генерувати ім'я користувача" + }, + "usernameType": { + "message": "Тип імені користувача" + }, + "plusAddressedEmail": { + "message": "Плюс адреса електронної пошти" + }, + "plusAddressedEmailDesc": { + "message": "Використовуйте розширені можливості адрес вашого постачальника електронної пошти." + }, + "catchallEmail": { + "message": "Адреса е-пошти Catch-all" + }, + "catchallEmailDesc": { + "message": "Використовуйте свою скриньку вхідних Catch-All власного домену." + }, + "random": { + "message": "Випадково" + }, + "randomWord": { + "message": "Випадкове слово" + }, + "websiteName": { + "message": "Назва вебсайту" + }, + "service": { + "message": "Послуга" + } +} diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json new file mode 100644 index 0000000000..bf7329b419 --- /dev/null +++ b/apps/desktop/src/locales/vi/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "Bộ lọc" + }, + "allItems": { + "message": "Tất cả các mục" + }, + "favorites": { + "message": "Yêu thích" + }, + "types": { + "message": "Các loại" + }, + "typeLogin": { + "message": "Đăng nhập" + }, + "typeCard": { + "message": "Thẻ" + }, + "typeIdentity": { + "message": "Danh tính" + }, + "typeSecureNote": { + "message": "Ghi chú bảo mật" + }, + "folders": { + "message": "Thư mục" + }, + "collections": { + "message": "Các Bộ Sưu Tập" + }, + "searchVault": { + "message": "Tìm kiếm trong Kho" + }, + "addItem": { + "message": "Thêm Mục" + }, + "shared": { + "message": "Đã chia sẻ" + }, + "share": { + "message": "Chia sẻ" + }, + "moveToOrganization": { + "message": "Move to Organization" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ moved to $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved." + }, + "attachments": { + "message": "Tệp đính kèm" + }, + "viewItem": { + "message": "Xem mục" + }, + "name": { + "message": "Tên mục" + }, + "uri": { + "message": "URL" + }, + "uriPosition": { + "message": "URL $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "URL Mới" + }, + "username": { + "message": "Tên người dùng" + }, + "password": { + "message": "Mật khẩu" + }, + "passphrase": { + "message": "Cụm từ mật khẩu" + }, + "editItem": { + "message": "Chỉnh sửa mục" + }, + "emailAddress": { + "message": "Địa chỉ Email" + }, + "verificationCodeTotp": { + "message": "Mã xác thực (TOTP)" + }, + "website": { + "message": "Trang web" + }, + "notes": { + "message": "Ghi chú" + }, + "customFields": { + "message": "Trường tùy chỉnh" + }, + "launch": { + "message": "Khởi chạy" + }, + "copyValue": { + "message": "Sao chép giá trị", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "Thu nhỏ sau khi sao chép vào bộ nhớ đệm" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "Thu nhỏ sau khi sao chép thông tin của một mục vào bộ nhớ đệm." + }, + "toggleVisibility": { + "message": "Bật/tắt khả năng hiển thị" + }, + "toggleCollapse": { + "message": "Toggle Collapse", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "Tên chủ thẻ" + }, + "number": { + "message": "Số" + }, + "brand": { + "message": "Thương hiệu" + }, + "expiration": { + "message": "Hết hạn" + }, + "securityCode": { + "message": "Mã bảo mật" + }, + "identityName": { + "message": "Tên đầy đủ" + }, + "company": { + "message": "Công ty" + }, + "ssn": { + "message": "Số bảo hiểm xã hội" + }, + "passportNumber": { + "message": "Số hộ chiếu" + }, + "licenseNumber": { + "message": "Số giấy phép" + }, + "email": { + "message": "Email" + }, + "phone": { + "message": "Số điện thoại" + }, + "address": { + "message": "Địa chỉ" + }, + "premiumRequired": { + "message": "Cần có tài khoản cao cấp" + }, + "premiumRequiredDesc": { + "message": "Cần là thành viên cao cấp để sử dụng tính năng này." + }, + "errorOccurred": { + "message": "Đã xảy ra lỗi chưa xác định." + }, + "error": { + "message": "Lỗi" + }, + "january": { + "message": "Tháng 1" + }, + "february": { + "message": "Tháng 2" + }, + "march": { + "message": "Tháng 3" + }, + "april": { + "message": "Tháng 4" + }, + "may": { + "message": "Tháng 5" + }, + "june": { + "message": "Tháng 6" + }, + "july": { + "message": "Tháng 7" + }, + "august": { + "message": "Tháng 8" + }, + "september": { + "message": "Tháng 9" + }, + "october": { + "message": "Tháng 10" + }, + "november": { + "message": "Tháng 11" + }, + "december": { + "message": "Tháng 12" + }, + "ex": { + "message": "Ví dụ:", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "Tiêu đề" + }, + "mr": { + "message": "Ông" + }, + "mrs": { + "message": "Bà" + }, + "ms": { + "message": "Chị" + }, + "dr": { + "message": "Tiến sĩ" + }, + "expirationMonth": { + "message": "Tháng Hết Hạn" + }, + "expirationYear": { + "message": "Năm hết hạn" + }, + "select": { + "message": "Chọn" + }, + "other": { + "message": "Khác" + }, + "generatePassword": { + "message": "Tạo mật khẩu" + }, + "type": { + "message": "Loại" + }, + "firstName": { + "message": "Tên" + }, + "middleName": { + "message": "Tên đệm" + }, + "lastName": { + "message": "Họ" + }, + "fullName": { + "message": "Full Name" + }, + "address1": { + "message": "Địa chỉ 1" + }, + "address2": { + "message": "Địa chỉ 2" + }, + "address3": { + "message": "Địa chỉ 3" + }, + "cityTown": { + "message": "Quận/Huyện/Thị trấn" + }, + "stateProvince": { + "message": "Tỉnh/Thành Phố" + }, + "zipPostalCode": { + "message": "Mã bưu chính" + }, + "country": { + "message": "Quốc Gia" + }, + "save": { + "message": "Lưu" + }, + "cancel": { + "message": "Hủy bỏ" + }, + "delete": { + "message": "Xóa" + }, + "favorite": { + "message": "Yêu thích" + }, + "edit": { + "message": "Sửa" + }, + "authenticatorKeyTotp": { + "message": "Khóa xác thực (TOTP)" + }, + "folder": { + "message": "Thư mục" + }, + "newCustomField": { + "message": "Trường tùy chỉnh mới" + }, + "value": { + "message": "Giá trị" + }, + "dragToSort": { + "message": "Kéo để sắp xếp" + }, + "cfTypeText": { + "message": "Văn bản" + }, + "cfTypeHidden": { + "message": "Ẩn" + }, + "cfTypeBoolean": { + "message": "Đúng/Sai" + }, + "cfTypeLinked": { + "message": "Linked", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "Linked value", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "Xoá" + }, + "nameRequired": { + "message": "Tên là bắt buộc." + }, + "addedItem": { + "message": "Đã thêm mục" + }, + "editedItem": { + "message": "Mục được chỉnh sửa" + }, + "deleteItem": { + "message": "Xóa mục" + }, + "deleteFolder": { + "message": "Xóa thư mục" + }, + "deleteAttachment": { + "message": "Gỡ bỏ tập tin đính kèm" + }, + "deleteItemConfirmation": { + "message": "Bạn có chắc bạn muốn xóa mục này?" + }, + "deletedItem": { + "message": "Đã xóa mục" + }, + "overwritePasswordConfirmation": { + "message": "Bạn có chắc chắn muốn ghi đè mật khẩu hiện tại không?" + }, + "overwriteUsername": { + "message": "Overwrite Username" + }, + "overwriteUsernameConfirmation": { + "message": "Are you sure you want to overwrite the current username?" + }, + "noneFolder": { + "message": "Không được phân loại", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "Thêm thư mục" + }, + "editFolder": { + "message": "Chỉnh sửa thư mục" + }, + "regeneratePassword": { + "message": "Tạo lại mật khẩu" + }, + "copyPassword": { + "message": "Sao chép Mật khẩu" + }, + "copyUri": { + "message": "Sao chép URI" + }, + "copyVerificationCodeTotp": { + "message": "Sao chép Mã xác thực (TOTP)" + }, + "length": { + "message": "Độ dài" + }, + "numWords": { + "message": "Number of Words" + }, + "wordSeparator": { + "message": "Word Separator" + }, + "capitalize": { + "message": "Viết hoa", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "Bao gồm cả số" + }, + "close": { + "message": "Đóng" + }, + "minNumbers": { + "message": "Số kí tự tối thiểu" + }, + "minSpecial": { + "message": "Số kí tự đặc biệt tối thiểu", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "Tránh các ký tự không rõ ràng" + }, + "searchCollection": { + "message": "Tìm kiếm bộ sưu tập" + }, + "searchFolder": { + "message": "Tìm kiếm thư mục" + }, + "searchFavorites": { + "message": "Tìm trong danh sách Yêu thích" + }, + "searchType": { + "message": "Tìm thể loại", + "description": "Search item type" + }, + "newAttachment": { + "message": "Thêm tệp đính kèm mới" + }, + "deletedAttachment": { + "message": "Đã xoá tệp đính kèm" + }, + "deleteAttachmentConfirmation": { + "message": "Bạn có muốn xóa tệp đính kèm này không?" + }, + "attachmentSaved": { + "message": "Tệp đính kèm đã được lưu." + }, + "file": { + "message": "Tập tin" + }, + "selectFile": { + "message": "Chọn 1 tập tin." + }, + "maxFileSize": { + "message": "Kích thước tối đa của tệp tin là 500MB." + }, + "updateKey": { + "message": "Bạn không thể sử dụng tính năng này cho đến khi bạn cập nhật khoá mã hóa." + }, + "editedFolder": { + "message": "Đã chỉnh sửa thư mục" + }, + "addedFolder": { + "message": "Đã thêm thư mục" + }, + "deleteFolderConfirmation": { + "message": "Bạn có chắc chắn muốn xóa thư mục này không?" + }, + "deletedFolder": { + "message": "Đã xóa thư mục" + }, + "loginOrCreateNewAccount": { + "message": "Đăng nhập hoặc tạo tài khoản mới để truy cập kho mật khẩu của bạn." + }, + "createAccount": { + "message": "Tạo Tài Khoản" + }, + "logIn": { + "message": "Đăng Nhập" + }, + "submit": { + "message": "Gửi" + }, + "masterPass": { + "message": "Mật khẩu chính" + }, + "masterPassDesc": { + "message": "Mật khẩu chính là mật khẩu bạn sử dụng để truy cập kho mật khẩu của bạn. Nó rất quan trọng nên bạn không được quên mật khẩu chính của mình. Không có cách nào để khôi phục lại mật khẩu chính nếu bạn quên nó." + }, + "masterPassHintDesc": { + "message": "Một gợi ý mật khẩu có thể giúp bạn nhớ lại mật khẩu chính của bạn nếu bạn quên nó." + }, + "reTypeMasterPass": { + "message": "Nhập lại mật khẩu chính" + }, + "masterPassHint": { + "message": "Gợi ý mật khẩu chính (tùy chọn)" + }, + "settings": { + "message": "Cài đặt" + }, + "passwordHint": { + "message": "Gợi ý mật khẩu" + }, + "enterEmailToGetHint": { + "message": "Nhập địa chỉ email tài khoản của bạn để nhận gợi ý mật khẩu chính." + }, + "getMasterPasswordHint": { + "message": "Nhận gợi ý mật khẩu chính" + }, + "emailRequired": { + "message": "Địa chỉ email là bắt buộc." + }, + "invalidEmail": { + "message": "Địa chỉ email không hợp lệ." + }, + "masterPassRequired": { + "message": "Mật khẩu chính là bắt buộc." + }, + "masterPassLength": { + "message": "Mật khẩu chính phải có ít nhất 8 kí tự." + }, + "masterPassDoesntMatch": { + "message": "Xác nhận mật khẩu chính không khớp." + }, + "newAccountCreated": { + "message": "Tài khoản của bạn đã được tạo. Bạn có thể đăng nhập bây giờ." + }, + "masterPassSent": { + "message": "Chúng tôi đã gửi cho bạn email có chứa gợi ý mật khẩu chính của bạn." + }, + "unexpectedError": { + "message": "Một lỗi bất ngờ đã xảy ra." + }, + "itemInformation": { + "message": "Mục thông tin" + }, + "noItemsInList": { + "message": "Không có mục nào để liệt kê." + }, + "sendVerificationCode": { + "message": "Send a verification code to your email" + }, + "sendCode": { + "message": "Send Code" + }, + "codeSent": { + "message": "Code Sent" + }, + "verificationCode": { + "message": "Mã xác nhận" + }, + "confirmIdentity": { + "message": "Confirm your identity to continue." + }, + "verificationCodeRequired": { + "message": "Yêu cầu mã xác nhận." + }, + "invalidVerificationCode": { + "message": "Invalid verification code" + }, + "continue": { + "message": "Tiếp tục" + }, + "enterVerificationCodeApp": { + "message": "Nhập mã xác nhận 6 chữ số từ ứng dụng xác thực của bạn." + }, + "enterVerificationCodeEmail": { + "message": "Nhập mã xác nhận 6 chữ số đã được gửi tới $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "Email xác minh được gửi tới $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "Ghi nhớ đăng nhập" + }, + "sendVerificationCodeEmailAgain": { + "message": "Gửi lại email chứa mã xác nhận" + }, + "useAnotherTwoStepMethod": { + "message": "Sử dụng phương pháp xác thực hai lớp khác" + }, + "insertYubiKey": { + "message": "Lắp YubiKey vào cổng USB máy tính của bạn, sau đó chạm vào nút trên nó." + }, + "insertU2f": { + "message": "Lắp khóa bảo mật vào cổng USB của máy tính. Nếu nó có một nút, nhấn vào nó." + }, + "recoveryCodeDesc": { + "message": "Bạn mất quyền truy cập vào tất cả các dịch vụ xác thực 2 lớp? Sử dụng mã phục hồi của bạn để vô hiệu hóa tất cả các dịch vụ xác thực hai lớp trong tài khoản của bạn." + }, + "recoveryCodeTitle": { + "message": "Mã phục hồi" + }, + "authenticatorAppTitle": { + "message": "Ứng dụng xác thực" + }, + "authenticatorAppDesc": { + "message": "Sử dụng một ứng dụng xác thực (chẳng hạn như Authy hoặc Google Authenticator) để tạo các mã xác nhận theo thời gian thực.", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "Khóa bảo mật YubiKey OTP" + }, + "yubiKeyDesc": { + "message": "Sử dụng YubiKey để truy cập tài khoản của bạn. Làm việc với thiết bị YubiKey 4, 4 Nano, 4C và NEO." + }, + "duoDesc": { + "message": "Xác minh với Duo Security sử dụng ứng dụng Duo Mobile, SMS, cuộc gọi điện thoại, hoặc khoá bảo mật U2F.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "Verify with Duo Security for your organization using the Duo Mobile app, SMS, phone call, or U2F security key.", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "Use any WebAuthn enabled security key to access your account." + }, + "emailTitle": { + "message": "Email" + }, + "emailDesc": { + "message": "Mã xác thực sẽ được gửi qua email cho bạn." + }, + "loginUnavailable": { + "message": "Đăng nhập không sẵn có" + }, + "noTwoStepProviders": { + "message": "Tài khoản này đã kích hoạt xác thực hai lớp, tuy nhiên, thiết bị này không hỗ trợ cấu hình dịch vụ xác thực hai lớp đang sử dụng." + }, + "noTwoStepProviders2": { + "message": "Vui lòng thêm các nhà cung cấp khác được hỗ trợ tốt hơn trên các thiết bị (chẳng hạn như một ứng dụng xác thực)." + }, + "twoStepOptions": { + "message": "Tùy chọn xác thực hai lớp" + }, + "selfHostedEnvironment": { + "message": "Môi trường độc lập" + }, + "selfHostedEnvironmentFooter": { + "message": "Chỉ định liên kết cơ bản của cài đặt Bitwarden tại chỗ của bạn." + }, + "customEnvironment": { + "message": "Môi trường tùy chỉnh" + }, + "customEnvironmentFooter": { + "message": "Đối với người dùng nâng cao. Bạn có thể chỉ định liên kết cơ bản của mỗi dịch vụ một cách độc lập." + }, + "baseUrl": { + "message": "Địa chỉ máy chủ" + }, + "apiUrl": { + "message": "Địa chỉ API máy chủ" + }, + "webVaultUrl": { + "message": "Địa chỉ máy chủ kho web" + }, + "identityUrl": { + "message": "Địa chỉ nhận dạng máy chủ" + }, + "notificationsUrl": { + "message": "Notifications Server URL" + }, + "iconsUrl": { + "message": "Biểu tượng địa chỉ máy chủ" + }, + "environmentSaved": { + "message": "Địa chỉ môi trường đã được lưu." + }, + "ok": { + "message": "Ok" + }, + "yes": { + "message": "Có" + }, + "no": { + "message": "Không" + }, + "overwritePassword": { + "message": "Ghi đè lên mật khẩu" + }, + "learnMore": { + "message": "Tìm hiểu thêm" + }, + "featureUnavailable": { + "message": "Tính năng không có sẵn" + }, + "loggedOut": { + "message": "Đăng xuất" + }, + "loginExpired": { + "message": "Phiên đăng nhập của bạn đã hết hạn." + }, + "logOutConfirmation": { + "message": "Bạn có chắc chắn muốn đăng xuất không?" + }, + "logOut": { + "message": "Đăng xuất" + }, + "addNewLogin": { + "message": "Thêm đăng nhập mới" + }, + "addNewItem": { + "message": "Thêm mục mới" + }, + "addNewFolder": { + "message": "Thêm thư mục mới" + }, + "view": { + "message": "Xem" + }, + "account": { + "message": "Tài khoản" + }, + "loading": { + "message": "Đang tải..." + }, + "lockVault": { + "message": "Lock Vault" + }, + "passwordGenerator": { + "message": "Tạo mật khẩu" + }, + "contactUs": { + "message": "Contact Us" + }, + "getHelp": { + "message": "Get Help" + }, + "fileBugReport": { + "message": "Gửi báo cáo lỗi" + }, + "blog": { + "message": "Blog" + }, + "followUs": { + "message": "Theo chúng tôi" + }, + "syncVault": { + "message": "Đồng bộ Kho mật khẩu" + }, + "changeMasterPass": { + "message": "Thay đổi mật khẩu chính" + }, + "changeMasterPasswordConfirmation": { + "message": "Bạn có thể thay đổi mật khẩu chính trong kho bitwarden nền web. Bạn có muốn truy cập trang web bây giờ?" + }, + "fingerprintPhrase": { + "message": "Fingerprint Phrase", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "Cụm từ mật khẩu tài khoản của bạn", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "Đi đến bitwarden nền Web" + }, + "getMobileApp": { + "message": "Tải ứng dụng điện thoại" + }, + "getBrowserExtension": { + "message": "Cài tiện ích mở rộng cho trình duyệt" + }, + "syncingComplete": { + "message": "Đồng bộ hoàn tất" + }, + "syncingFailed": { + "message": "Đồng bộ thất bại" + }, + "yourVaultIsLocked": { + "message": "Kho mật khẩu đã bị khóa. Xác minh mật khẩu chinhs của bạn để mở." + }, + "unlock": { + "message": "Mở khóa" + }, + "loggedInAsOn": { + "message": "Đã đăng nhập bằng $EMAIL$ trên $HOSTNAME$.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "Mật khẩu chính không hợp lệ" + }, + "twoStepLoginConfirmation": { + "message": "Xác thực hai lớp giúp cho tài khoản của bạn an toàn hơn bằng cách yêu cầu bạn xác minh thông tin đăng nhập của bạn bằng một thiết bị khác như khóa bảo mật, ứng dụng xác thực, SMS, cuộc gọi điện thoại hoặc email. Bạn có thể bật xác thực hai lớp trong kho bitwarden nền web. Bạn có muốn ghé thăm trang web bây giờ?" + }, + "twoStepLogin": { + "message": "Xác thực hai lớp" + }, + "vaultTimeout": { + "message": "Thời Gian Chờ Của Kho" + }, + "vaultTimeoutDesc": { + "message": "Chọn khi nào thì kho của bạn sẽ hết thời gian chờ và thực hiện hành động đã được chọn." + }, + "immediately": { + "message": "Tức thì" + }, + "tenSeconds": { + "message": "10 giây" + }, + "twentySeconds": { + "message": "20 giây" + }, + "thirtySeconds": { + "message": "30 giây" + }, + "oneMinute": { + "message": "1 phút" + }, + "twoMinutes": { + "message": "2 phút" + }, + "fiveMinutes": { + "message": "5 phút" + }, + "fifteenMinutes": { + "message": "15 phút" + }, + "thirtyMinutes": { + "message": "30 phút" + }, + "oneHour": { + "message": "1 giờ" + }, + "fourHours": { + "message": "4 giờ" + }, + "onIdle": { + "message": "Khi hệ thống rảnh" + }, + "onSleep": { + "message": "Khi hệ thống ngủ" + }, + "onLocked": { + "message": "Khi khóa màn hình" + }, + "onRestart": { + "message": "Khi khởi động lại máy" + }, + "never": { + "message": "Không bao giờ" + }, + "security": { + "message": "Bảo mật" + }, + "clearClipboard": { + "message": "Dọn dẹp khay nhớ tạm", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "Tự động dọn dẹp giá trị được sao chép khỏi khay nhớ tạm của bạn.", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "Vô hiệu hoá biểu tượng trang web" + }, + "disableFaviconDesc": { + "message": "Biểu tượng trang web cung cấp các biểu tượng nhận dạng trang web bên cạnh mỗi mục đăng nhập trong kho mật khẩu của bạn." + }, + "enableMinToTray": { + "message": "Minimize to Tray Icon" + }, + "enableMinToTrayDesc": { + "message": "When minimizing the window, show an icon in the system tray instead." + }, + "enableMinToMenuBar": { + "message": "Minimize to menu bar" + }, + "enableMinToMenuBarDesc": { + "message": "When minimizing the window, show an icon in the menu bar instead." + }, + "enableCloseToTray": { + "message": "Close to Tray Icon" + }, + "enableCloseToTrayDesc": { + "message": "Khi đóng cửa sổ, thay vào đó sẽ hiện một biểu tượng trên khay hệ thống." + }, + "enableCloseToMenuBar": { + "message": "Close to menu bar" + }, + "enableCloseToMenuBarDesc": { + "message": "When closing the window, show an icon in the menu bar instead." + }, + "enableTray": { + "message": "Enable Tray Icon" + }, + "enableTrayDesc": { + "message": "Luôn hiện biểu tượng trên khay hệ thống." + }, + "startToTray": { + "message": "Khởi động vào khay hệ thống" + }, + "startToTrayDesc": { + "message": "Khi ứng dụng mới mở, chỉ hiện biểu tượng trên khay hệ thống." + }, + "startToMenuBar": { + "message": "Start to menu bar" + }, + "startToMenuBarDesc": { + "message": "When the application is first started, only show an icon in the menu bar." + }, + "openAtLogin": { + "message": "Start automatically on login" + }, + "openAtLoginDesc": { + "message": "Start the Bitwarden Desktop application automatically on login." + }, + "alwaysShowDock": { + "message": "Always show in the Dock" + }, + "alwaysShowDockDesc": { + "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + }, + "confirmTrayTitle": { + "message": "Confirm disable tray" + }, + "confirmTrayDesc": { + "message": "Disabling this setting will also disable all other tray related settings." + }, + "language": { + "message": "Ngôn ngữ" + }, + "languageDesc": { + "message": "Thay đổi ngôn ngữ được ứng dụng sử dụng. Yêu cầu khởi động lại." + }, + "theme": { + "message": "Chủ đề" + }, + "themeDesc": { + "message": "Change the application's color theme." + }, + "dark": { + "message": "Tối", + "description": "Dark color" + }, + "light": { + "message": "Sáng", + "description": "Light color" + }, + "copy": { + "message": "Sao chép", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "Kiểm tra cập nhật mới" + }, + "version": { + "message": "Phiên bản $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "Khởi động lại để cập nhật" + }, + "restartToUpdateDesc": { + "message": "Phiên bản $VERSION_NUM$ đã sẵn sàng để cài đặt. Bitwarden cần khởi động lại để hoàn tất quá trình cài đặt. Bạn có muốn khởi động lại và cập nhật bây giờ không?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "Có bản cập nhật mới" + }, + "updateAvailableDesc": { + "message": "Một bản cập nhật đã được tìm thấy. Bạn có muốn tải xuống bây giờ không?" + }, + "restart": { + "message": "Khởi động lại" + }, + "later": { + "message": "Để sau" + }, + "noUpdatesAvailable": { + "message": "Hiện không có cập nhật nào. Bạn đang sử dụng phiên bản mới nhất." + }, + "updateError": { + "message": "Cập nhật bị lỗi" + }, + "unknown": { + "message": "Không xác định" + }, + "copyUsername": { + "message": "Sao chép Tên đăng nhập" + }, + "copyNumber": { + "message": "Chép số", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "Sao chép Mã bảo mật", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "Thành viên Cao Cấp" + }, + "premiumManage": { + "message": "Quản lý Thành viên" + }, + "premiumManageAlert": { + "message": "Bạn có thể quản lý các thành viên trong kho bitwarden nền web. Bạn có muốn truy cập trang web bây giờ?" + }, + "premiumRefresh": { + "message": "Làm mới thành viên" + }, + "premiumNotCurrentMember": { + "message": "Bạn hiện không phải là một thành viên cao cấp." + }, + "premiumSignUpAndGet": { + "message": "Đăng ký làm thành viên cao cấp và nhận được:" + }, + "premiumSignUpStorage": { + "message": "1GB bộ nhớ lưu trữ tập tin được mã hóa." + }, + "premiumSignUpTwoStep": { + "message": "Các tùy chọn xác thực hai lớp bổ sung như YubiKey, FIDO U2F và Duo." + }, + "premiumSignUpReports": { + "message": "Thanh lọc mật khẩu, kiểm tra an toàn tài khoản và các báo cáo rò rĩ dữ liệu là để giữ cho kho của bạn an toàn." + }, + "premiumSignUpTotp": { + "message": "Mã xác nhận TOTP (2FA) để đăng nhập vào kho mật khẩu của bạn." + }, + "premiumSignUpSupport": { + "message": "Hỗ trợ khách hàng ưu tiên." + }, + "premiumSignUpFuture": { + "message": "Tất cả các tính năng cao cấp trong tương lai. Nó sẽ sớm xuất hiện!" + }, + "premiumPurchase": { + "message": "Mua bản Cao Cấp" + }, + "premiumPurchaseAlert": { + "message": "Bạn có thể nâng cấp làm thành viên cao cấp trong kho bitwarden nền web. Bạn có muốn truy cập trang web bây giờ?" + }, + "premiumCurrentMember": { + "message": "Bạn là một thành viên cao cấp!" + }, + "premiumCurrentMemberThanks": { + "message": "Cảm ơn bạn đã hỗ trợ Bitwarden." + }, + "premiumPrice": { + "message": "Tất cả chỉ với $PRICE$ /năm!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "Làm mới hoàn tất" + }, + "passwordHistory": { + "message": "Lịch sử Mật khẩu" + }, + "clear": { + "message": "Xoá", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "Không có mật khẩu để liệt kê." + }, + "undo": { + "message": "Hoàn tác" + }, + "redo": { + "message": "Làm lại" + }, + "cut": { + "message": "Cắt", + "description": "Cut to clipboard" + }, + "paste": { + "message": "Dán", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "Chọn tất cả" + }, + "zoomIn": { + "message": "Phóng to" + }, + "zoomOut": { + "message": "Thu nhỏ" + }, + "resetZoom": { + "message": "Đặt lại thu phóng" + }, + "toggleFullScreen": { + "message": "Bật/Tắt Toàn Màn Hình" + }, + "reload": { + "message": "Tải lại" + }, + "toggleDevTools": { + "message": "Bật/Tắt Công Cụ Nhà Phát Triển" + }, + "minimize": { + "message": "Thu nhỏ", + "description": "Minimize window" + }, + "zoom": { + "message": "Phóng to" + }, + "bringAllToFront": { + "message": "Hiển thị trên tất cả", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "Giới thiệu về Bitwarden" + }, + "services": { + "message": "Dịch vụ" + }, + "hideBitwarden": { + "message": "Ẩn Bitwarden" + }, + "hideOthers": { + "message": "Ẩn Khác" + }, + "showAll": { + "message": "Hiện tất cả" + }, + "quitBitwarden": { + "message": "Thoát Bitwarden" + }, + "valueCopied": { + "message": "Đã sao chép $VALUE$", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "Trợ giúp" + }, + "window": { + "message": "Cửa sổ" + }, + "checkPassword": { + "message": "Kiểm tra xem mật khẩu có bị lộ không." + }, + "passwordExposed": { + "message": "Mật khẩu này đã bị lộ $VALUE$ thời gian trong các dữ liệu vi phạm. Bạn nên thay đổi nó.", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "Mật khẩu này không được tìm thấy trong bất kỳ dữ liệu vi phạm nào được biết đến. Nó an toàn để sử dụng." + }, + "baseDomain": { + "message": "Tên miền cơ sở", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "Domain Name", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "Máy chủ", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "Chính xác" + }, + "startsWith": { + "message": "Bắt đầu với" + }, + "regEx": { + "message": "Biểu thức chính quy", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "Độ phù hợp", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "Độ phù hợp mặc định", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "Bật/tắt tùy chọn" + }, + "organization": { + "message": "Organization", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "Mặc định" + }, + "exit": { + "message": "Thoát ra" + }, + "showHide": { + "message": "Show / Hide", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "Hide to Tray" + }, + "alwaysOnTop": { + "message": "Luôn trên cùng", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "Ngày cập nhật", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "Password Updated", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "Export Vault" + }, + "fileFormat": { + "message": "File Format" + }, + "warning": { + "message": "CẢNH BÁO", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "Confirm Vault Export" + }, + "exportWarningDesc": { + "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." + }, + "encExportKeyWarningDesc": { + "message": "This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file." + }, + "encExportAccountWarningDesc": { + "message": "Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account." + }, + "noOrganizationsList": { + "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + }, + "noCollectionsInList": { + "message": "Không có bộ sưu tập nào để liệt kê." + }, + "ownership": { + "message": "Quyền sở hữu" + }, + "whoOwnsThisItem": { + "message": "Ai sở hữu mục này?" + }, + "strong": { + "message": "Mạnh", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "Tốt", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "Yếu", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "Weak Master Password" + }, + "weakMasterPasswordDesc": { + "message": "Mật khẩu chính bạn vừa chọn có vẻ yếu. Bạn nên chọn mật khẩu chính (hoặc cụm từ mật khẩu) mạnh để bảo vệ đúng cách tài khoản Bitwarden của bạn. Bạn có thực sự muốn dùng mật khẩu chính này?" + }, + "pin": { + "message": "Mã PIN", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "Mở khóa với mã PIN" + }, + "setYourPinCode": { + "message": "Đặt mã PIN của bạn để mở khóa Bitwarden. Cài đặt mã PIN của bạn sẽ bị xóa nếu bạn hoàn toàn đăng xuất khỏi ứng dụng." + }, + "pinRequired": { + "message": "Mã PIN là bắt buộc." + }, + "invalidPin": { + "message": "Mã PIN không hợp lệ." + }, + "unlockWithWindowsHello": { + "message": "Mở khóa với Windows Hello" + }, + "windowsHelloConsentMessage": { + "message": "Xác minh cho Bitwarden." + }, + "unlockWithTouchId": { + "message": "Mở khóa với Touch ID" + }, + "touchIdConsentMessage": { + "message": "Xác minh cho Bitwarden." + }, + "noAutoPromptWindowsHello": { + "message": "Do not prompt for Windows Hello on launch." + }, + "noAutoPromptTouchId": { + "message": "Do not prompt for Touch ID on launch." + }, + "lockWithMasterPassOnRestart": { + "message": "Khóa với mật khẩu chính khi khởi động lại" + }, + "preferences": { + "message": "Tuỳ chỉnh" + }, + "enableMenuBar": { + "message": "Bật biểu tượng thanh menu" + }, + "enableMenuBarDesc": { + "message": "Luôn hiển biểu tượng trên thanh menu." + }, + "hideToMenuBar": { + "message": "Ẩn vào thanh menu" + }, + "selectOneCollection": { + "message": "Bạn phải chọn ít nhất một bộ sưu tập." + }, + "premiumUpdated": { + "message": "Bạn đã nâng cấp lên Cao Cấp." + }, + "restore": { + "message": "Khôi phục" + }, + "premiumManageAlertAppStore": { + "message": "Bạn có thể quản lý đăng ký của từ App Store. Bạn có muốn truy cập vào App Store ngay không?" + }, + "legal": { + "message": "Pháp lý", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "Điều khoản dịch vụ" + }, + "privacyPolicy": { + "message": "Chính sách bảo mật" + }, + "unsavedChangesConfirmation": { + "message": "Bạn có chắc là muốn thoát? Nếu bạn thoát bây giờ, thông tin hiện tại sẽ không được lưu lại." + }, + "unsavedChangesTitle": { + "message": "Những thay đổi chưa được lưu" + }, + "clone": { + "message": "Tạo bản sao" + }, + "passwordGeneratorPolicyInEffect": { + "message": "Có một hoặc vài chính sách của tổ chức đang làm ảnh hưởng đến cài đặt tạo mật khẩu của bạn." + }, + "vaultTimeoutAction": { + "message": "Hành Động Khi Hết Thời Gian Chờ" + }, + "vaultTimeoutActionLockDesc": { + "message": "Kho bị khóa sẽ yêu cầu bạn nhập lại mật khẩu chính để có thể truy cập." + }, + "vaultTimeoutActionLogOutDesc": { + "message": "Kho bị đăng xuất sẽ yêu cầu bạn xác thực lại để có thể truy cập." + }, + "lock": { + "message": "Khóa", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "Thùng rác", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "Tìm kiếm thùng rác" + }, + "permanentlyDeleteItem": { + "message": "Xoá vĩnh viễn mục" + }, + "permanentlyDeleteItemConfirmation": { + "message": "Bạn có chắc chắn muốn xóa vĩnh viễn mục này không?" + }, + "permanentlyDeletedItem": { + "message": "Đã xóa vĩnh viễn mục" + }, + "restoreItem": { + "message": "Khôi phục mục" + }, + "restoreItemConfirmation": { + "message": "Bạn có chắc chắn muốn khôi phục mục này không?" + }, + "restoredItem": { + "message": "Mục đã được khôi phục" + }, + "permanentlyDelete": { + "message": "Xóa Vĩnh Viễn" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "Đăng xuất sẽ xóa tất các truy cập vào kho của bạn và yêu cầu xác thực trực tuyến sau khi khoảng thời gian chờ hết. Bạn có chắc bạn muốn dùng cài đặt này?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "Xác nhận hành động khi hết thời gian chờ" + }, + "enterpriseSingleSignOn": { + "message": "Enterprise Single Sign-On" + }, + "setMasterPassword": { + "message": "Thiết lập mật khẩu chính" + }, + "ssoCompleteRegistration": { + "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "newMasterPass": { + "message": "Mật khẩu chính mới" + }, + "confirmNewMasterPass": { + "message": "Xác nhận mật khẩu chính mới" + }, + "masterPasswordPolicyInEffect": { + "message": "One or more organization policies require your master password to meet the following requirements:" + }, + "policyInEffectMinComplexity": { + "message": "Minimum complexity score of $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "Minimum length of $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "Có chứa một hay nhiều ký tự viết hoa" + }, + "policyInEffectLowercase": { + "message": "Chứa một hoặc nhiều kí tự viết thường" + }, + "policyInEffectNumbers": { + "message": "Có chứa một hay nhiều số" + }, + "policyInEffectSpecial": { + "message": "Có chứa một hay nhiều ký tự đặc biệt sau: $CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "Your new master password does not meet the policy requirements." + }, + "acceptPolicies": { + "message": "By checking this box you agree to the following:" + }, + "acceptPoliciesError": { + "message": "Terms of Service and Privacy Policy have not been acknowledged." + }, + "enableBrowserIntegration": { + "message": "Enable browser integration" + }, + "enableBrowserIntegrationDesc": { + "message": "Browser integration is used for biometrics in browser." + }, + "browserIntegrationMasOnlyTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationMasOnlyDesc": { + "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + }, + "browserIntegrationWindowsStoreTitle": { + "message": "Browser integration not supported" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "Unfortunately browser integration is currently not supported in the Windows Store version." + }, + "enableBrowserIntegrationFingerprint": { + "message": "Require verification for browser integration" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "Enable an additional layer of security by requiring fingerprint phrase validation when establishing a link between your desktop and browser. When enabled, this requires user intervention and verification each time a connection is established." + }, + "approve": { + "message": "Chấp nhận" + }, + "verifyBrowserTitle": { + "message": "Verify browser connection" + }, + "verifyBrowserDesc": { + "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + }, + "biometricsNotEnabledTitle": { + "message": "Biometrics not enabled" + }, + "biometricsNotEnabledDesc": { + "message": "Browser biometrics requires desktop biometrics to be enabled in the settings first." + }, + "personalOwnershipSubmitError": { + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + }, + "hintEqualsPassword": { + "message": "Your password hint cannot be the same as your password." + }, + "personalOwnershipPolicyInEffect": { + "message": "An organization policy is affecting your ownership options." + }, + "allSends": { + "message": "Toàn bộ Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "Tập tin" + }, + "sendTypeText": { + "message": "Văn bản" + }, + "searchSends": { + "message": "Tìm kiếm Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "Chỉnh sửa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "Hầm của tôi" + }, + "text": { + "message": "Văn bản" + }, + "deletionDate": { + "message": "Deletion Date" + }, + "deletionDateDesc": { + "message": "Send sẽ được xóa vĩnh viễn vào ngày và giờ được chỉ định.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "Ngày Hết Hạn" + }, + "expirationDateDesc": { + "message": "Nếu được thiết lập, truy cập vào Send này sẽ hết hạn vào ngày và giờ được chỉ định.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "Số lượng truy cập tối đa" + }, + "maxAccessCountDesc": { + "message": "Nếu được thiết lập, khi đã đạt tới số lượng truy cập tối đa, người dùng sẽ không thể truy cập Send này nữa.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "Số lượng truy cập hiện tại" + }, + "disableSend": { + "message": "Disable this Send so that no one can access it.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "Optionally require a password for users to access this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "Private notes about this Send.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Gửi liên kết", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send Link", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "When accessing the Send, hide the text by default", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Đã tạo Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Đã chỉnh sửa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Đã xóa Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "Mật khẩu mới" + }, + "whatTypeOfSend": { + "message": "Đây là loại Send gì?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "Tạo Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "Văn bản bạn muốn gửi." + }, + "sendFileDesc": { + "message": "Tập tin bạn muốn gửi." + }, + "days": { + "message": "$DAYS$ ngày", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 ngày" + }, + "custom": { + "message": "Custom" + }, + "deleteSendConfirmation": { + "message": "Bạn có chắc chắn muốn xóa Send này?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "Copy Send link to clipboard", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "Copy the link to share this Send to my clipboard upon save." + }, + "sendDisabled": { + "message": "Đã tắt Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "Do chính sách doanh nghiệp, bạn chỉ có thể xóa những Send hiện có.", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "Sao chép liên kết" + }, + "disabled": { + "message": "Disabled" + }, + "maxAccessCountReached": { + "message": "Max access count reached" + }, + "expired": { + "message": "Expired" + }, + "pendingDeletion": { + "message": "Đang chờ xóa" + }, + "webAuthnAuthenticate": { + "message": "Authenticate WebAuthn" + }, + "hideEmail": { + "message": "Hide my email address from recipients." + }, + "sendOptionsPolicyInEffect": { + "message": "One or more organization policies are affecting your Send options." + }, + "emailVerificationRequired": { + "message": "Email Verification Required" + }, + "emailVerificationRequiredDesc": { + "message": "You must verify your email to use this feature." + }, + "passwordPrompt": { + "message": "Master password re-prompt" + }, + "passwordConfirmation": { + "message": "Master password confirmation" + }, + "passwordConfirmationDesc": { + "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + }, + "addAccount": { + "message": "Add Account" + }, + "removeMasterPassword": { + "message": "Remove Master Password" + }, + "removedMasterPassword": { + "message": "Master password removed." + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "Leave Organization" + }, + "leaveOrganizationConfirmation": { + "message": "Are you sure you want to leave this organization?" + }, + "leftOrganization": { + "message": "You have left the organization." + }, + "ssoKeyConnectorUnavailable": { + "message": "Unable to reach the key connector, try again later." + }, + "lockAllVaults": { + "message": "Lock All Vaults" + }, + "accountLimitReached": { + "message": "No more than 5 accounts may be logged in at the same time." + }, + "accountPreferences": { + "message": "Preferences" + }, + "appPreferences": { + "message": "App Settings (All Accounts)" + }, + "accountSwitcherLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "settingsTitle": { + "message": "App settings for $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "Switch Account" + }, + "options": { + "message": "Options" + }, + "sessionTimeout": { + "message": "Your session has timed out. Please go back and try logging in again." + }, + "exportingPersonalVaultTitle": { + "message": "Exporting Personal Vault" + }, + "exportingPersonalVaultDescription": { + "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "Generator" + }, + "whatWouldYouLikeToGenerate": { + "message": "What would you like to generate?" + }, + "passwordType": { + "message": "Password Type" + }, + "regenerateUsername": { + "message": "Regenerate Username" + }, + "generateUsername": { + "message": "Generate Username" + }, + "usernameType": { + "message": "Username Type" + }, + "plusAddressedEmail": { + "message": "Plus Addressed Email" + }, + "plusAddressedEmailDesc": { + "message": "Use your email provider's sub-addressing capabilities." + }, + "catchallEmail": { + "message": "Catch-all Email" + }, + "catchallEmailDesc": { + "message": "Use your domain's configured catch-all inbox." + }, + "random": { + "message": "Random" + }, + "randomWord": { + "message": "Random Word" + }, + "websiteName": { + "message": "Website Name" + }, + "service": { + "message": "Service" + } +} diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json new file mode 100644 index 0000000000..f4a1443cff --- /dev/null +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -0,0 +1,1740 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "筛选" + }, + "allItems": { + "message": "所有项目" + }, + "favorites": { + "message": "我的收藏" + }, + "types": { + "message": "类型" + }, + "typeLogin": { + "message": "登录" + }, + "typeCard": { + "message": "支付卡" + }, + "typeIdentity": { + "message": "身份" + }, + "typeSecureNote": { + "message": "安全笔记" + }, + "folders": { + "message": "文件夹" + }, + "collections": { + "message": "集合" + }, + "searchVault": { + "message": "搜索密码库" + }, + "addItem": { + "message": "添加项目" + }, + "shared": { + "message": "已共享" + }, + "share": { + "message": "共享" + }, + "moveToOrganization": { + "message": "移动到组织" + }, + "movedItemToOrg": { + "message": "$ITEMNAME$ 已移动到 $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "选择一个您想将此项目移至的组织。移动到组织会将该项目的所有权转让给该组织。移动后,您将不再是此项目的直接所有者。" + }, + "attachments": { + "message": "附件" + }, + "viewItem": { + "message": "查看项目" + }, + "name": { + "message": "名称" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "新增 URI" + }, + "username": { + "message": "用户名" + }, + "password": { + "message": "密码" + }, + "passphrase": { + "message": "密码短语" + }, + "editItem": { + "message": "编辑项目" + }, + "emailAddress": { + "message": "电子邮件地址" + }, + "verificationCodeTotp": { + "message": "验证码 (TOTP)" + }, + "website": { + "message": "网站" + }, + "notes": { + "message": "备注" + }, + "customFields": { + "message": "自定义字段" + }, + "launch": { + "message": "启动" + }, + "copyValue": { + "message": "复制值", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "复制到剪贴板时最小化" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "复制项目数据到剪贴板时最小化。" + }, + "toggleVisibility": { + "message": "切换可见性" + }, + "toggleCollapse": { + "message": "切换折叠", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "持卡人姓名" + }, + "number": { + "message": "号码" + }, + "brand": { + "message": "品牌" + }, + "expiration": { + "message": "到期日" + }, + "securityCode": { + "message": "安全码" + }, + "identityName": { + "message": "身份名称" + }, + "company": { + "message": "公司" + }, + "ssn": { + "message": "社会保险号码" + }, + "passportNumber": { + "message": "护照号码" + }, + "licenseNumber": { + "message": "许可证号码" + }, + "email": { + "message": "电子邮件" + }, + "phone": { + "message": "电话" + }, + "address": { + "message": "地址" + }, + "premiumRequired": { + "message": "需要高级会员" + }, + "premiumRequiredDesc": { + "message": "使用此功能需要高级会员资格。" + }, + "errorOccurred": { + "message": "发生错误。" + }, + "error": { + "message": "错误" + }, + "january": { + "message": "一月" + }, + "february": { + "message": "二月" + }, + "march": { + "message": "三月" + }, + "april": { + "message": "四月" + }, + "may": { + "message": "五月" + }, + "june": { + "message": "六月" + }, + "july": { + "message": "七月" + }, + "august": { + "message": "八月" + }, + "september": { + "message": "九月" + }, + "october": { + "message": "十月" + }, + "november": { + "message": "十一月" + }, + "december": { + "message": "十二月" + }, + "ex": { + "message": "例如", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "称呼" + }, + "mr": { + "message": "先生" + }, + "mrs": { + "message": "夫人" + }, + "ms": { + "message": "女士" + }, + "dr": { + "message": "博士" + }, + "expirationMonth": { + "message": "到期月份" + }, + "expirationYear": { + "message": "到期年份" + }, + "select": { + "message": "选择" + }, + "other": { + "message": "其他" + }, + "generatePassword": { + "message": "生成密码" + }, + "type": { + "message": "类型" + }, + "firstName": { + "message": "名" + }, + "middleName": { + "message": "中间名" + }, + "lastName": { + "message": "姓" + }, + "address1": { + "message": "地址 1" + }, + "address2": { + "message": "地址 2" + }, + "address3": { + "message": "地址 3" + }, + "cityTown": { + "message": "市 / 镇" + }, + "stateProvince": { + "message": "州 / 省" + }, + "zipPostalCode": { + "message": "邮政编码" + }, + "country": { + "message": "国家/地区" + }, + "save": { + "message": "保存" + }, + "cancel": { + "message": "取消" + }, + "delete": { + "message": "删除" + }, + "favorite": { + "message": "收藏" + }, + "edit": { + "message": "编辑" + }, + "authenticatorKeyTotp": { + "message": "验证器密钥 (TOTP)" + }, + "folder": { + "message": "文件夹" + }, + "newCustomField": { + "message": "新建自定义字段" + }, + "value": { + "message": "值" + }, + "dragToSort": { + "message": "拖动排序" + }, + "cfTypeText": { + "message": "文本" + }, + "cfTypeHidden": { + "message": "隐藏的" + }, + "cfTypeBoolean": { + "message": "布尔值" + }, + "remove": { + "message": "移除" + }, + "nameRequired": { + "message": "必须填写名称。" + }, + "addedItem": { + "message": "项目已添加" + }, + "editedItem": { + "message": "项目已编辑" + }, + "deleteItem": { + "message": "删除项目" + }, + "deleteFolder": { + "message": "删除文件夹" + }, + "deleteAttachment": { + "message": "删除附件" + }, + "deleteItemConfirmation": { + "message": "您确定要删除此项目吗?" + }, + "deletedItem": { + "message": "项目已发送到回收站" + }, + "overwritePasswordConfirmation": { + "message": "您确定要覆盖当前密码吗?" + }, + "noneFolder": { + "message": "默认文件夹", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "添加文件夹" + }, + "editFolder": { + "message": "编辑文件夹" + }, + "regeneratePassword": { + "message": "重新生成密码" + }, + "copyPassword": { + "message": "复制密码" + }, + "copyUri": { + "message": "复制 URI" + }, + "copyVerificationCodeTotp": { + "message": "复制验证码 (TOTP)" + }, + "length": { + "message": "长度" + }, + "numWords": { + "message": "单词数" + }, + "wordSeparator": { + "message": "单词分隔符" + }, + "capitalize": { + "message": "大写", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "包含数字" + }, + "close": { + "message": "关闭" + }, + "minNumbers": { + "message": "数字最少个数" + }, + "minSpecial": { + "message": "符号最少个数", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "避免易混淆的字符" + }, + "searchCollection": { + "message": "搜索集合" + }, + "searchFolder": { + "message": "搜索文件夹" + }, + "searchFavorites": { + "message": "搜索收藏" + }, + "searchType": { + "message": "搜索类型", + "description": "Search item type" + }, + "newAttachment": { + "message": "添加新附件" + }, + "deletedAttachment": { + "message": "附件已删除" + }, + "deleteAttachmentConfirmation": { + "message": "您确定要删除此附件吗?" + }, + "attachmentSaved": { + "message": "附件已保存。" + }, + "file": { + "message": "文件" + }, + "selectFile": { + "message": "选择一个文件。" + }, + "maxFileSize": { + "message": "文件最大为 500 MB。" + }, + "updateKey": { + "message": "在您更新加密密钥前,您不能使用此功能。" + }, + "options": { + "message": "选项" + }, + "editedFolder": { + "message": "文件夹已编辑" + }, + "addedFolder": { + "message": "文件夹已添加" + }, + "deleteFolderConfirmation": { + "message": "您确定要删除此文件夹吗?" + }, + "deletedFolder": { + "message": "文件夹已删除" + }, + "loginOrCreateNewAccount": { + "message": "登录或者创建一个账号来访问您的安全密码库。" + }, + "createAccount": { + "message": "创建账号" + }, + "logIn": { + "message": "登录" + }, + "submit": { + "message": "提交" + }, + "masterPass": { + "message": "主密码" + }, + "masterPassDesc": { + "message": "主密码是访问密码库的唯一密码。它非常重要,请您不要忘记。忘记主密码后,我们无法为您恢复或重置它。" + }, + "masterPassHintDesc": { + "message": "主密码提示可以在你忘记密码时帮你回忆。" + }, + "reTypeMasterPass": { + "message": "重新输入主密码" + }, + "masterPassHint": { + "message": "主密码提示 (可选)" + }, + "settings": { + "message": "设置" + }, + "passwordHint": { + "message": "密码提示" + }, + "enterEmailToGetHint": { + "message": "请输入您账号的电子邮件地址来接收密码提示。" + }, + "getMasterPasswordHint": { + "message": "获取主密码提示" + }, + "emailRequired": { + "message": "必须填写电子邮件地址。" + }, + "invalidEmail": { + "message": "无效的电子邮件地址。" + }, + "masterPassRequired": { + "message": "必须填写主密码。" + }, + "masterPassLength": { + "message": "主密码至少需要 8 个字符。" + }, + "masterPassDoesntMatch": { + "message": "两次填写的主密码不一致。" + }, + "newAccountCreated": { + "message": "已经为您建立了账户,您可以登录了。" + }, + "masterPassSent": { + "message": "我们已经为您发送了包含主密码提示的邮件。" + }, + "unexpectedError": { + "message": "发生意外错误。" + }, + "itemInformation": { + "message": "项目信息" + }, + "noItemsInList": { + "message": "没有可列出的项目。" + }, + "verificationCode": { + "message": "验证码" + }, + "verificationCodeRequired": { + "message": "必须填写验证码。" + }, + "continue": { + "message": "继续" + }, + "enterVerificationCodeApp": { + "message": "请输入您的身份验证器应用中的 6 位验证码。" + }, + "enterVerificationCodeEmail": { + "message": "请输入通过电子邮件发送给 $EMAIL$ 的 6 位验证码。", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "验证邮件已发送到 $EMAIL$。", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "记住我" + }, + "sendVerificationCodeEmailAgain": { + "message": "重发验证码电子邮件" + }, + "useAnotherTwoStepMethod": { + "message": "使用其他两步登录方式" + }, + "insertYubiKey": { + "message": "将您的 YubiKey 插入计算机的 USB 端口,然后按下按钮。" + }, + "insertU2f": { + "message": "将您的安全钥匙插入计算机的 USB 端口。如果它有一个按钮,按下它。" + }, + "recoveryCodeDesc": { + "message": "失去访问您所有的双重身份验证设备?请使用您的恢复代码来禁用您账户中所有的两步登录提供程序。" + }, + "recoveryCodeTitle": { + "message": "恢复代码" + }, + "authenticatorAppTitle": { + "message": "验证器应用" + }, + "authenticatorAppDesc": { + "message": "使用身份验证器应用(例如 Authy 或 Google Authenticator)来生成基于时间的验证码。", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP 安全钥匙" + }, + "yubiKeyDesc": { + "message": "使用 YubiKey 来访问您的账户。支持 YubiKey 4、4 Nano、4C 以及 NEO 设备。" + }, + "duoDesc": { + "message": "使用 Duo Security 的 Duo 移动应用、短信、电话或 U2F 安全钥匙来进行验证。", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "为您的组织使用 Duo Security 的 Duo 移动应用、短信、电话或 U2F 安全钥匙来进行验证。", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "使用任何 WebAuthn 安全密钥访问您的帐户。" + }, + "emailTitle": { + "message": "电子邮件地址" + }, + "emailDesc": { + "message": "验证码将会发送到您的电子邮箱。" + }, + "loginUnavailable": { + "message": "登录不可用" + }, + "noTwoStepProviders": { + "message": "此账户已启用两步登录,但此设备不支持任何已配置的两步登录提供程序。" + }, + "noTwoStepProviders2": { + "message": "请添加能更好支持跨设备使用的提供程序(比如验证器应用)。" + }, + "twoStepOptions": { + "message": "两步登录选项" + }, + "selfHostedEnvironment": { + "message": "自托管环境" + }, + "selfHostedEnvironmentFooter": { + "message": "指定您本地托管的 Bitwarden 安装的基础 URL。" + }, + "customEnvironment": { + "message": "自定义环境" + }, + "customEnvironmentFooter": { + "message": "适用于高级用户。你可以分别指定各个服务的基础 URL。" + }, + "baseUrl": { + "message": "服务器 URL" + }, + "apiUrl": { + "message": "API 服务器 URL" + }, + "webVaultUrl": { + "message": "网页密码库服务器 URL" + }, + "identityUrl": { + "message": "身份服务器 URL" + }, + "notificationsUrl": { + "message": "通知服务器 URL" + }, + "iconsUrl": { + "message": "图标服务器 URL" + }, + "environmentSaved": { + "message": "各环境 URL 已保存。" + }, + "ok": { + "message": "确定" + }, + "yes": { + "message": "是" + }, + "no": { + "message": "否" + }, + "overwritePassword": { + "message": "覆盖密码" + }, + "learnMore": { + "message": "进一步了解" + }, + "featureUnavailable": { + "message": "功能不可用" + }, + "loggedOut": { + "message": "已注销" + }, + "loginExpired": { + "message": "您的登录会话已过期。" + }, + "logOutConfirmation": { + "message": "您确定要注销吗?" + }, + "logOut": { + "message": "注销" + }, + "addNewLogin": { + "message": "添加新登录" + }, + "addNewItem": { + "message": "添加新项目" + }, + "addNewFolder": { + "message": "添加文件夹" + }, + "view": { + "message": "查看" + }, + "account": { + "message": "账户" + }, + "loading": { + "message": "正在加载..." + }, + "lockNow": { + "message": "立即锁定" + }, + "passwordGenerator": { + "message": "密码生成器" + }, + "emailUs": { + "message": "给我们发邮件" + }, + "visitOurWebsite": { + "message": "访问我们的网站" + }, + "fileBugReport": { + "message": "发送错误报告" + }, + "blog": { + "message": "博客" + }, + "followUs": { + "message": "关注我们" + }, + "syncVault": { + "message": "同步密码库" + }, + "changeMasterPass": { + "message": "修改主密码" + }, + "changeMasterPasswordConfirmation": { + "message": "您可以在 bitwarden.com 网页密码库修改您的主密码。现在要访问吗?" + }, + "fingerprintPhrase": { + "message": "指纹短语", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "您的账户的指纹短语", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "转到网页版密码库" + }, + "getMobileApp": { + "message": "获取手机应用" + }, + "getBrowserExtension": { + "message": "获取浏览器扩展" + }, + "syncingComplete": { + "message": "同步完成" + }, + "syncingFailed": { + "message": "同步失败" + }, + "yourVaultIsLocked": { + "message": "您的密码库已锁定,请验证您的主密码以继续。" + }, + "unlock": { + "message": "解锁​​​​" + }, + "loggedInAsOn": { + "message": "已使用 $EMAIL$ 在 $HOSTNAME$ 上登录。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "无效的主密码" + }, + "twoStepLoginConfirmation": { + "message": "两步登录要求您从其他设备(例如安全钥匙、验证器应用、短信、电话或者电子邮件)来验证你的登录,这能使您的账户更加安全。两步登录可以在 bitwarden.com 网页版密码库启用。现在要访问吗?" + }, + "twoStepLogin": { + "message": "两步登录" + }, + "vaultTimeout": { + "message": "密码库超时" + }, + "vaultTimeoutDesc": { + "message": "选择您的密码库何时超时并执行所选的动作。" + }, + "immediately": { + "message": "立即" + }, + "tenSeconds": { + "message": "10 秒" + }, + "twentySeconds": { + "message": "20 秒" + }, + "thirtySeconds": { + "message": "30 秒" + }, + "oneMinute": { + "message": "1 分钟" + }, + "twoMinutes": { + "message": "2 分钟" + }, + "fiveMinutes": { + "message": "5 分钟" + }, + "fifteenMinutes": { + "message": "15 分钟" + }, + "thirtyMinutes": { + "message": "30 分钟" + }, + "oneHour": { + "message": "1 小时" + }, + "fourHours": { + "message": "4 小时" + }, + "onIdle": { + "message": "系统空闲时" + }, + "onSleep": { + "message": "系统休眠时" + }, + "onLocked": { + "message": "系统锁定时" + }, + "onRestart": { + "message": "重启时" + }, + "never": { + "message": "从不" + }, + "security": { + "message": "安全" + }, + "clearClipboard": { + "message": "清除剪贴板", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "自动清除复制到剪贴板的值。", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "禁用网站图标" + }, + "disableFaviconDesc": { + "message": "在您的密码库的每个登录项旁显示一个可识别的图标。" + }, + "enableMinToTray": { + "message": "最小化到托盘图标" + }, + "enableMinToTrayDesc": { + "message": "最小化窗口后,改为在系统托盘中显示一个图标。" + }, + "enableMinToMenuBar": { + "message": "最小化到菜单栏" + }, + "enableMinToMenuBarDesc": { + "message": "最小化窗口后,改为在菜单栏中显示一个图标。" + }, + "enableCloseToTray": { + "message": "关闭到托盘图标" + }, + "enableCloseToTrayDesc": { + "message": "关闭窗口后,改为在系统托盘中显示一个图标。" + }, + "enableCloseToMenuBar": { + "message": "关闭到菜单栏" + }, + "enableCloseToMenuBarDesc": { + "message": "关闭窗口后,改为在菜单栏中显示一个图标。" + }, + "enableTray": { + "message": "启用托盘图标" + }, + "enableTrayDesc": { + "message": "始终在系统托盘中显示一个图标。" + }, + "startToTray": { + "message": "启动到托盘图标" + }, + "startToTrayDesc": { + "message": "应用程序首次启动时,启动到系统托盘。" + }, + "startToMenuBar": { + "message": "启动到菜单栏" + }, + "startToMenuBarDesc": { + "message": "应用程序首次启动时,启动到菜单栏。" + }, + "openAtLogin": { + "message": "登录时自动启动" + }, + "openAtLoginDesc": { + "message": "登录时自动启动 Bitwarden 桌面应用程序。" + }, + "alwaysShowDock": { + "message": "始终在 Dock 中显示" + }, + "alwaysShowDockDesc": { + "message": "即使已最小化到菜单栏,仍在 Dock 中显示 Bitwarden 图标。" + }, + "confirmTrayTitle": { + "message": "确认禁用托盘" + }, + "confirmTrayDesc": { + "message": "禁用此设置也将禁用其他与托盘相关的设置。" + }, + "language": { + "message": "语言" + }, + "languageDesc": { + "message": "更改本应用程序使用的语言。需要重新启动才能生效。" + }, + "theme": { + "message": "主题" + }, + "themeDesc": { + "message": "更改本应用程序的颜色主题。" + }, + "dark": { + "message": "暗", + "description": "Dark color" + }, + "light": { + "message": "亮", + "description": "Light color" + }, + "copy": { + "message": "复制", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "检查更新" + }, + "version": { + "message": "版本 $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "重启以更新" + }, + "restartToUpdateDesc": { + "message": "版本 $VERSION_NUM$ 已准备好安装。您必须重新启动本应用程序才能完成安装。是否立即重新启动并更新?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "有可用的更新" + }, + "updateAvailableDesc": { + "message": "发现更新。是否立即下载?" + }, + "restart": { + "message": "重新启动" + }, + "later": { + "message": "稍后" + }, + "noUpdatesAvailable": { + "message": "当前没有可用的更新。您使用的是最新版本。" + }, + "updateError": { + "message": "更新错误" + }, + "unknown": { + "message": "未知" + }, + "copyUsername": { + "message": "复制用户名" + }, + "copyNumber": { + "message": "复制号码", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "复制安全码", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "高级会员" + }, + "premiumManage": { + "message": "管理会员资格" + }, + "premiumManageAlert": { + "message": "您可以在 bitwarden.com 网页版密码库管理您的会员资格。现在要访问吗?" + }, + "premiumRefresh": { + "message": "刷新会员资格" + }, + "premiumNotCurrentMember": { + "message": "您目前不是高级会员。" + }, + "premiumSignUpAndGet": { + "message": "注册高级会员将获得:" + }, + "premiumSignUpStorage": { + "message": "1 GB 文件附件加密存储。" + }, + "premiumSignUpTwoStep": { + "message": "额外的两步登录选项,如 YubiKey、FIDO U2F 和 Duo。" + }, + "premiumSignUpReports": { + "message": "密码健康、账户体检以及数据泄露报告,保障您的密码库安全。" + }, + "premiumSignUpTotp": { + "message": "用于密码库中登录项目的 TOTP 验证码(2FA)生成器。" + }, + "premiumSignUpSupport": { + "message": "优先客户支持。" + }, + "premiumSignUpFuture": { + "message": "所有未来的高级功能。即将推出!" + }, + "premiumPurchase": { + "message": "购买高级版" + }, + "premiumPurchaseAlert": { + "message": "您可以在 bitwarden.com 网页版密码库购买高级会员。现在要访问吗?" + }, + "premiumCurrentMember": { + "message": "您是高级会员!" + }, + "premiumCurrentMemberThanks": { + "message": "感谢您支持 Bitwarden。" + }, + "premiumPrice": { + "message": "每年只需 $PRICE$ !", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "刷新完成" + }, + "passwordHistory": { + "message": "密码历史记录" + }, + "clear": { + "message": "清除", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "没有可列出的密码。" + }, + "undo": { + "message": "撤销" + }, + "redo": { + "message": "重做" + }, + "cut": { + "message": "剪切", + "description": "Cut to clipboard" + }, + "paste": { + "message": "粘贴", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "选择所有" + }, + "zoomIn": { + "message": "放大" + }, + "zoomOut": { + "message": "缩小" + }, + "resetZoom": { + "message": "重置缩放" + }, + "toggleFullScreen": { + "message": "切换全屏" + }, + "reload": { + "message": "重新加载" + }, + "toggleDevTools": { + "message": "切换开发工具" + }, + "minimize": { + "message": "最小化", + "description": "Minimize window" + }, + "zoom": { + "message": "缩放" + }, + "bringAllToFront": { + "message": "前置所有", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "关于 Bitwarden" + }, + "services": { + "message": "服务" + }, + "hideBitwarden": { + "message": "隐藏 Bitwarden" + }, + "hideOthers": { + "message": "隐藏其他" + }, + "showAll": { + "message": "显示全部" + }, + "quitBitwarden": { + "message": "退出 Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ 已复制", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "帮助" + }, + "window": { + "message": "窗口" + }, + "checkPassword": { + "message": "检查密码是否已经被公开。" + }, + "passwordExposed": { + "message": "此密码在泄露数据中已被公开 $VALUE$ 次。请立即修改。", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "没有在已知的数据泄露中发现此密码,它暂时比较安全。" + }, + "baseDomain": { + "message": "基础域" + }, + "host": { + "message": "主机", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "精确" + }, + "startsWith": { + "message": "开始于" + }, + "regEx": { + "message": "正则表达式", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "匹配检测", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "默认匹配检测", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "切换选项" + }, + "organization": { + "message": "组织", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "默认" + }, + "exit": { + "message": "退出" + }, + "showHide": { + "message": "显示/隐藏", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "隐藏到托盘" + }, + "alwaysOnTop": { + "message": "总是在最前面", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "更新于", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "密码更新于", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "导出密码库" + }, + "fileFormat": { + "message": "文件格式" + }, + "warning": { + "message": "警告", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "确认密码库导出" + }, + "exportWarningDesc": { + "message": "导出的密码库数据包含未加密格式。您不应该通过不安全的渠道(例如电子邮件)来存储或发送导出的文件。用完后请立即将其删除。" + }, + "encExportKeyWarningDesc": { + "message": "此导出将使用您账户的加密密钥来加密您的数据。 如果您曾经轮换过账户的加密密钥,您应将其重新导出,否则您将无法解密导出的文件。" + }, + "encExportAccountWarningDesc": { + "message": "账户加密密钥对每个 Bitwarden 用户账户都是唯一的,所以您不能将加密的导出导入到另一个账户。" + }, + "exportMasterPassword": { + "message": "输入主密码来导出你的密码库。" + }, + "noOrganizationsList": { + "message": "您没有加入任何组织。同一组织的用户可以安全地与其他用户共享项目。" + }, + "noCollectionsInList": { + "message": "没有可列出的集合。" + }, + "ownership": { + "message": "所有权" + }, + "whoOwnsThisItem": { + "message": "谁拥有这个项目?" + }, + "strong": { + "message": "强", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "良好", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "弱", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "脆弱的主密码" + }, + "weakMasterPasswordDesc": { + "message": "您选择的主密码较弱。您应该使用强密码(或密码短语)来正确保护您的 Bitwarden 账户。仍要使用此主密码吗?" + }, + "pin": { + "message": "PIN 码", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "使用 PIN 码解锁" + }, + "setYourPinCode": { + "message": "设定您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您完全注销本应用程序时被重置。" + }, + "pinRequired": { + "message": "需要 PIN 码。" + }, + "invalidPin": { + "message": "无效 PIN 码。" + }, + "yourVaultIsLockedPinCode": { + "message": "您的密码库已锁定。请验证您的 PIN 码以继续。" + }, + "unlockWithWindowsHello": { + "message": "使用 Windows Hello 解锁" + }, + "windowsHelloConsentMessage": { + "message": "验证 Bitwarden。" + }, + "unlockWithTouchId": { + "message": "使用触控 ID 解锁" + }, + "touchIdConsentMessage": { + "message": "解锁您的密码库" + }, + "noAutoPromptWindowsHello": { + "message": "启动时不提示 Windows Hello。" + }, + "noAutoPromptTouchId": { + "message": "启动时不提示 Touch ID。" + }, + "lockWithMasterPassOnRestart": { + "message": "重启后使用主密码锁定" + }, + "preferences": { + "message": "设置" + }, + "enableMenuBar": { + "message": "启用菜单栏图标" + }, + "enableMenuBarDesc": { + "message": "始终显示菜单栏图标。" + }, + "hideToMenuBar": { + "message": "隐藏到菜单栏" + }, + "selectOneCollection": { + "message": "您必须至少选择一个集合。" + }, + "premiumUpdated": { + "message": "您已升级到高级会员。" + }, + "restore": { + "message": "恢复" + }, + "premiumManageAlertAppStore": { + "message": "您可以从 App Store 管理您的订阅。现在要访问 App Store 吗?" + }, + "legal": { + "message": "法律条款", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "服务条款" + }, + "privacyPolicy": { + "message": "隐私条款" + }, + "unsavedChangesConfirmation": { + "message": "您确定要离开吗?如果您现在离开,您当前的信息不会被保存。" + }, + "unsavedChangesTitle": { + "message": "更改未保存" + }, + "clone": { + "message": "克隆" + }, + "passwordGeneratorPolicyInEffect": { + "message": "一个或多个组织策略正在影响您的生成器设置。" + }, + "vaultTimeoutAction": { + "message": "密码库超时动作" + }, + "vaultTimeoutActionLockDesc": { + "message": "已锁定的密码库需要重新输入主密码才能再次访问。" + }, + "vaultTimeoutActionLogOutDesc": { + "message": "已注销的密码库需要重新验证才能再次访问。" + }, + "lock": { + "message": "锁定", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "回收站", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "搜索回收站" + }, + "permanentlyDeleteItem": { + "message": "永久删除项目" + }, + "permanentlyDeleteItemConfirmation": { + "message": "您确定要永久删除此项目吗?" + }, + "permanentlyDeletedItem": { + "message": "已永久删除项目" + }, + "restoreItem": { + "message": "恢复项目" + }, + "restoreItemConfirmation": { + "message": "您确定要恢复此项目吗?" + }, + "restoredItem": { + "message": "项目已恢复" + }, + "permanentlyDelete": { + "message": "永久删除" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "超时后注销将解除对密码库的所有访问权限,并需要进行在线验证。确定使用此设置吗?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "超时动作确认" + }, + "enterpriseSingleSignOn": { + "message": "企业单点登录(SSO)" + }, + "setMasterPassword": { + "message": "设置主密码" + }, + "ssoCompleteRegistration": { + "message": "要完成 SSO 登陆配置,请设置一个主密码以访问和保护您的密码库。" + }, + "newMasterPass": { + "message": "新的主密码" + }, + "confirmNewMasterPass": { + "message": "确认新的主密码" + }, + "masterPasswordPolicyInEffect": { + "message": "一个或多个组织策略要求您的主密码满足下列要求:" + }, + "policyInEffectMinComplexity": { + "message": "最小复杂度为 $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "最小长度为 $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "至少包含一个大写字符" + }, + "policyInEffectLowercase": { + "message": "至少包含一个小写字符" + }, + "policyInEffectNumbers": { + "message": "至少包含一个数字" + }, + "policyInEffectSpecial": { + "message": "至少包含一个以下特殊字符:$CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "您的新主密码不符合策略要求。" + }, + "acceptPolicies": { + "message": "选中此框表示您同意:" + }, + "acceptPoliciesError": { + "message": "尚未同意服务条款和隐私政策。" + }, + "enableBrowserIntegration": { + "message": "启用浏览器整合" + }, + "enableBrowserIntegrationDesc": { + "message": "浏览器整合用于在浏览器中提供生物识别。" + }, + "browserIntegrationMasOnlyTitle": { + "message": "不支持浏览器整合" + }, + "browserIntegrationMasOnlyDesc": { + "message": "很遗憾,目前仅 Mac App Store 版本支持浏览器整合。" + }, + "browserIntegrationWindowsStoreTitle": { + "message": "不支持浏览器整合" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "很不幸,当前 Windows Store 版本不支持浏览器整合。" + }, + "enableBrowserIntegrationFingerprint": { + "message": "要求浏览器整合验证" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "在您的桌面与浏览器间建立连接时,要求验证指纹短语以实现一个额外安全层。此选项启用后,每次建立连接都需要用户干预和验证。" + }, + "approve": { + "message": "批准" + }, + "verifyBrowserTitle": { + "message": "验证浏览器连接" + }, + "verifyBrowserDesc": { + "message": "请确保显示的指纹与浏览器扩展中显示的指纹相同。" + }, + "biometricsNotEnabledTitle": { + "message": "生物识别未启用" + }, + "biometricsNotEnabledDesc": { + "message": "需要先在桌面应用程序的设置中启用生物识别,才能使用浏览器中的生物识别。" + }, + "personalOwnershipSubmitError": { + "message": "由于企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" + }, + "hintEqualsPassword": { + "message": "您的密码提示不能与您的密码相同。" + }, + "personalOwnershipPolicyInEffect": { + "message": "一个组织策略正影响您的所有权选项。" + }, + "allSends": { + "message": "所有的 Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "文件" + }, + "sendTypeText": { + "message": "文本" + }, + "searchSends": { + "message": "搜索 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "编辑 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "密码库" + }, + "text": { + "message": "文本" + }, + "deletionDate": { + "message": "删除日期" + }, + "deletionDateDesc": { + "message": "此 Send 将在指定的日期和时间后被永久删除。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "过期日期" + }, + "expirationDateDesc": { + "message": "如果设定,此 Send 将在指定的日期和时间后过期。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "最大访问次数" + }, + "maxAccessCountDesc": { + "message": "如果设定,达到最大访问次数后用户将无法访问此 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "当前访问次数" + }, + "disableSend": { + "message": "禁用此 Send 以阻止任何人访问它。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "可选,用户需要提供密码才能访问此 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "关于此 Send 的私密备注。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send 链接", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send 链接", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "访问 Send 时,默认将隐藏文本", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send 已创建", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send 已编辑", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send 已删除", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "新密码" + }, + "whatTypeOfSend": { + "message": "这是什么类型的 Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "创建 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "您想要发送的文本。" + }, + "sendFileDesc": { + "message": "您想要发送的文件。" + }, + "days": { + "message": "$DAYS$ 天", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 天" + }, + "custom": { + "message": "自定义" + }, + "deleteSendConfirmation": { + "message": "确定要删除此 Send 吗?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "复制 Send 链接到剪贴板", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "保存时复制链接到剪贴板以便分享此 Send。" + }, + "sendDisabled": { + "message": "Send 已禁用", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "由于企业策略,您只能删除现有的 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "复制链接" + }, + "disabled": { + "message": "已禁用" + }, + "maxAccessCountReached": { + "message": "已达最大访问次数" + }, + "expired": { + "message": "已过期" + }, + "pendingDeletion": { + "message": "等待删除" + }, + "webAuthnAuthenticate": { + "message": "验证 WebAuthn" + }, + "hideEmail": { + "message": "对收件人隐藏我的电子邮件地址。" + }, + "sendOptionsPolicyInEffect": { + "message": "一个或多个组织策略正在影响您的 Send 设置。" + }, + "emailVerificationRequired": { + "message": "需要验证电子邮件" + }, + "emailVerificationRequiredDesc": { + "message": "您必须验证您的电子邮件才能使用此功能。" + }, + "passwordPrompt": { + "message": "重新询问主密码" + }, + "passwordConfirmation": { + "message": "确认主密码" + }, + "passwordConfirmationDesc": { + "message": "此操作受到保护。若要继续,请重新输入您的主密码以验证您的身份。" + }, + "updatedMasterPassword": { + "message": "Updated Master Password" + }, + "updateMasterPassword": { + "message": "Update Master Password" + }, + "updateMasterPasswordWarning": { + "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." + }, + "resetPasswordPolicyAutoEnroll": { + "message": "Automatic Enrollment" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + }, + "vaultExportDisabled": { + "message": "Vault Export Disabled" + }, + "personalVaultExportPolicyInEffect": { + "message": "One or more organization policies prevents you from exporting your personal vault." + } +} diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json new file mode 100644 index 0000000000..d979e8ef41 --- /dev/null +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -0,0 +1,1885 @@ +{ + "bitwarden": { + "message": "Bitwarden" + }, + "filters": { + "message": "篩選器" + }, + "allItems": { + "message": "所有項目" + }, + "favorites": { + "message": "我的最愛" + }, + "types": { + "message": "類型" + }, + "typeLogin": { + "message": "登入" + }, + "typeCard": { + "message": "支付卡" + }, + "typeIdentity": { + "message": "身分" + }, + "typeSecureNote": { + "message": "安全筆記" + }, + "folders": { + "message": "資料夾" + }, + "collections": { + "message": "集合" + }, + "searchVault": { + "message": "搜尋密碼庫" + }, + "addItem": { + "message": "新增項目" + }, + "shared": { + "message": "已共享" + }, + "share": { + "message": "共享" + }, + "moveToOrganization": { + "message": "移動至組織" + }, + "movedItemToOrg": { + "message": "已將 $ITEMNAME$ 移動至 $ORGNAME$", + "placeholders": { + "itemname": { + "content": "$1", + "example": "Secret Item" + }, + "orgname": { + "content": "$2", + "example": "Company Name" + } + } + }, + "moveToOrgDesc": { + "message": "選擇您希望將這個項目移動到哪個組織。項目的擁有權將會轉移到該組織。一經移動,您將不再是此項目的直接擁有者。" + }, + "attachments": { + "message": "附件" + }, + "viewItem": { + "message": "檢視項目" + }, + "name": { + "message": "名稱" + }, + "uri": { + "message": "URI" + }, + "uriPosition": { + "message": "URI $POSITION$", + "description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, + "newUri": { + "message": "新增 URI" + }, + "username": { + "message": "使用者名稱" + }, + "password": { + "message": "密碼" + }, + "passphrase": { + "message": "密碼短語" + }, + "editItem": { + "message": "編輯項目" + }, + "emailAddress": { + "message": "電子郵件地址" + }, + "verificationCodeTotp": { + "message": "驗證碼(TOTP)" + }, + "website": { + "message": "網站" + }, + "notes": { + "message": "備註" + }, + "customFields": { + "message": "自訂欄位" + }, + "launch": { + "message": "啟動" + }, + "copyValue": { + "message": "複製值", + "description": "Copy value to clipboard" + }, + "minimizeOnCopyToClipboard": { + "message": "複製到剪貼簿後最小化" + }, + "minimizeOnCopyToClipboardDesc": { + "message": "複製項目資料到剪貼簿後最小化。" + }, + "toggleVisibility": { + "message": "切換可見性" + }, + "toggleCollapse": { + "message": "切換折疊", + "description": "Toggling an expand/collapse state." + }, + "cardholderName": { + "message": "持卡人姓名" + }, + "number": { + "message": "號碼" + }, + "brand": { + "message": "發卡組織" + }, + "expiration": { + "message": "逾期" + }, + "securityCode": { + "message": "安全代碼" + }, + "identityName": { + "message": "身分名稱" + }, + "company": { + "message": "公司" + }, + "ssn": { + "message": "社會保險號碼" + }, + "passportNumber": { + "message": "護照號碼" + }, + "licenseNumber": { + "message": "許可證編號" + }, + "email": { + "message": "電子郵件" + }, + "phone": { + "message": "電話號碼" + }, + "address": { + "message": "地址" + }, + "premiumRequired": { + "message": "需要進階會員資格" + }, + "premiumRequiredDesc": { + "message": "進階會員才可使用此功能。" + }, + "errorOccurred": { + "message": "發生錯誤。" + }, + "error": { + "message": "錯誤" + }, + "january": { + "message": "一月" + }, + "february": { + "message": "二月" + }, + "march": { + "message": "三月" + }, + "april": { + "message": "四月" + }, + "may": { + "message": "五月" + }, + "june": { + "message": "六月" + }, + "july": { + "message": "七月" + }, + "august": { + "message": "八月" + }, + "september": { + "message": "九月" + }, + "october": { + "message": "十月" + }, + "november": { + "message": "十一月" + }, + "december": { + "message": "十二月" + }, + "ex": { + "message": "例如", + "description": "Short abbreviation for 'example'." + }, + "title": { + "message": "稱呼" + }, + "mr": { + "message": "Mr" + }, + "mrs": { + "message": "Mrs" + }, + "ms": { + "message": "Ms" + }, + "dr": { + "message": "Dr" + }, + "expirationMonth": { + "message": "逾期月份" + }, + "expirationYear": { + "message": "逾期年份" + }, + "select": { + "message": "選擇" + }, + "other": { + "message": "其他" + }, + "generatePassword": { + "message": "產生密碼" + }, + "type": { + "message": "類型" + }, + "firstName": { + "message": "名" + }, + "middleName": { + "message": "中間名" + }, + "lastName": { + "message": "姓" + }, + "fullName": { + "message": "全名" + }, + "address1": { + "message": "地址 1" + }, + "address2": { + "message": "地址 2" + }, + "address3": { + "message": "地址 3" + }, + "cityTown": { + "message": "市/鎮" + }, + "stateProvince": { + "message": "州/省" + }, + "zipPostalCode": { + "message": "郵遞區號" + }, + "country": { + "message": "國家" + }, + "save": { + "message": "儲存" + }, + "cancel": { + "message": "取消" + }, + "delete": { + "message": "刪除" + }, + "favorite": { + "message": "我的最愛" + }, + "edit": { + "message": "編輯" + }, + "authenticatorKeyTotp": { + "message": "驗證器金鑰(TOTP)" + }, + "folder": { + "message": "資料夾" + }, + "newCustomField": { + "message": "新增自訂欄位" + }, + "value": { + "message": "值" + }, + "dragToSort": { + "message": "透過拖曳來排序" + }, + "cfTypeText": { + "message": "文字型" + }, + "cfTypeHidden": { + "message": "隱藏型" + }, + "cfTypeBoolean": { + "message": "布林值" + }, + "cfTypeLinked": { + "message": "連結型", + "description": "This describes a field that is 'linked' (related) to another field." + }, + "linkedValue": { + "message": "連結的數值", + "description": "This describes a value that is 'linked' (related) to another value." + }, + "remove": { + "message": "移除" + }, + "nameRequired": { + "message": "必須填入名稱。" + }, + "addedItem": { + "message": "項目已新增" + }, + "editedItem": { + "message": "項目已編輯" + }, + "deleteItem": { + "message": "刪除項目" + }, + "deleteFolder": { + "message": "刪除資料夾" + }, + "deleteAttachment": { + "message": "刪除附件" + }, + "deleteItemConfirmation": { + "message": "確定要刪除此項目嗎?" + }, + "deletedItem": { + "message": "發送項目到垃圾桶" + }, + "overwritePasswordConfirmation": { + "message": "您確定要覆寫目前的密碼嗎?" + }, + "overwriteUsername": { + "message": "覆寫使用者名稱" + }, + "overwriteUsernameConfirmation": { + "message": "您確定要覆寫目前的使用者名稱嗎?" + }, + "noneFolder": { + "message": "(未分類)", + "description": "This is the folder for uncategorized items" + }, + "addFolder": { + "message": "新增資料夾" + }, + "editFolder": { + "message": "編輯資料夾" + }, + "regeneratePassword": { + "message": "重新產生密碼" + }, + "copyPassword": { + "message": "複製密碼" + }, + "copyUri": { + "message": "複製 URI" + }, + "copyVerificationCodeTotp": { + "message": "複製驗證碼(TOTP)" + }, + "length": { + "message": "長度" + }, + "numWords": { + "message": "字數" + }, + "wordSeparator": { + "message": "文字分隔字元" + }, + "capitalize": { + "message": "大寫", + "description": "Make the first letter of a work uppercase." + }, + "includeNumber": { + "message": "包含數字" + }, + "close": { + "message": "關閉" + }, + "minNumbers": { + "message": "最少數字位數" + }, + "minSpecial": { + "message": "最少符號位數", + "description": "Minimum Special Characters" + }, + "ambiguous": { + "message": "避免易混淆的字元" + }, + "searchCollection": { + "message": "搜尋集合" + }, + "searchFolder": { + "message": "搜尋資料夾" + }, + "searchFavorites": { + "message": "搜尋我的最愛" + }, + "searchType": { + "message": "搜尋類型", + "description": "Search item type" + }, + "newAttachment": { + "message": "新增附件" + }, + "deletedAttachment": { + "message": "附件已刪除" + }, + "deleteAttachmentConfirmation": { + "message": "確定要刪除此附件嗎?" + }, + "attachmentSaved": { + "message": "附件已儲存。" + }, + "file": { + "message": "檔案" + }, + "selectFile": { + "message": "選擇檔案。" + }, + "maxFileSize": { + "message": "檔案最大為 500MB。" + }, + "updateKey": { + "message": "更新加密金鑰前不能使用此功能。" + }, + "editedFolder": { + "message": "資料夾已編輯" + }, + "addedFolder": { + "message": "資料夾已新增" + }, + "deleteFolderConfirmation": { + "message": "您確定要刪除此資料夾嗎?" + }, + "deletedFolder": { + "message": "資料夾已刪除" + }, + "loginOrCreateNewAccount": { + "message": "登入或建立帳戶來存取您的安全密碼庫。" + }, + "createAccount": { + "message": "建立帳戶" + }, + "logIn": { + "message": "登入" + }, + "submit": { + "message": "送出" + }, + "masterPass": { + "message": "主密碼" + }, + "masterPassDesc": { + "message": "主密碼是您用於存取您的密碼庫的密碼。不要忘記主密碼,這一點非常重要。如果忘記了密碼,無法將其復原。" + }, + "masterPassHintDesc": { + "message": "主密碼提示可以在您忘記主密碼時幫助您回憶主密碼。" + }, + "reTypeMasterPass": { + "message": "重新輸入主密碼" + }, + "masterPassHint": { + "message": "主密碼提示(選用)" + }, + "settings": { + "message": "設定" + }, + "passwordHint": { + "message": "密碼提示" + }, + "enterEmailToGetHint": { + "message": "請輸入您的帳户電子郵件地址以接收主密碼提示。" + }, + "getMasterPasswordHint": { + "message": "取得主密碼提示" + }, + "emailRequired": { + "message": "必須填入電子郵件地址。" + }, + "invalidEmail": { + "message": "無效的電子郵件地址。" + }, + "masterPassRequired": { + "message": "必須填入主密碼。" + }, + "masterPassLength": { + "message": "主密碼需要至少 8 個字元。" + }, + "masterPassDoesntMatch": { + "message": "兩次填入的主密碼不一致。" + }, + "newAccountCreated": { + "message": "帳戶已建立!現在可以登入了。" + }, + "masterPassSent": { + "message": "已寄出包含您主密碼提示的電子郵件。" + }, + "unexpectedError": { + "message": "發生了未預期的錯誤。" + }, + "itemInformation": { + "message": "項目資訊" + }, + "noItemsInList": { + "message": "沒有可列出的項目。" + }, + "sendVerificationCode": { + "message": "傳送驗證碼至您的電子郵件信箱" + }, + "sendCode": { + "message": "傳送驗證碼" + }, + "codeSent": { + "message": "驗證碼已傳送" + }, + "verificationCode": { + "message": "驗證碼" + }, + "confirmIdentity": { + "message": "請先確認身分後再繼續。" + }, + "verificationCodeRequired": { + "message": "必須填入驗證碼。" + }, + "invalidVerificationCode": { + "message": "無效的驗證碼" + }, + "continue": { + "message": "繼續" + }, + "enterVerificationCodeApp": { + "message": "輸入驗證器應用程式提供的 6 位數驗證碼。" + }, + "enterVerificationCodeEmail": { + "message": "請輸入 6 位數驗證碼,我們已將其傳送至 $EMAIL$.", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "verificationCodeEmailSent": { + "message": "已傳送驗證電子郵件至 $EMAIL$。", + "placeholders": { + "email": { + "content": "$1", + "example": "example@gmail.com" + } + } + }, + "rememberMe": { + "message": "記住我" + }, + "sendVerificationCodeEmailAgain": { + "message": "再次傳送​​包含驗證碼的電子郵件" + }, + "useAnotherTwoStepMethod": { + "message": "使用另一種兩步驟登入方式" + }, + "insertYubiKey": { + "message": "將您的 YubiKey 插入電腦的 USB 連接埠,然後按一下它的按鈕。" + }, + "insertU2f": { + "message": "將您的安全鑰匙插入電腦的 USB 連接埠,然後按一下它的按鈕(如有的話)。" + }, + "recoveryCodeDesc": { + "message": "無法使用任何雙要素提供程式嗎?請使用您的復原代碼以停用您賬戶的所有雙要素提供程式。" + }, + "recoveryCodeTitle": { + "message": "復原代碼" + }, + "authenticatorAppTitle": { + "message": "驗證器應用程式" + }, + "authenticatorAppDesc": { + "message": "使用驗證器應用程式(如 Authy 或 Google Authenticator)產生基於時間的驗證碼。", + "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." + }, + "yubiKeyTitle": { + "message": "YubiKey OTP 安全鑰匙" + }, + "yubiKeyDesc": { + "message": "使用 YubiKey 來存取您的帳戶。支援 YubiKey 4、4 Nano、4C、以及 NEO 裝置。" + }, + "duoDesc": { + "message": "使用 Duo Security 的 Duo Mobile 程式、SMS 、致電或 U2F 安全鑰匙進行驗證。", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "duoOrganizationDesc": { + "message": "爲您的組織使用 Duo Security 的 Duo Mobile 程式、SMS、致電或 U2F 安全鑰匙進行驗證。", + "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." + }, + "webAuthnTitle": { + "message": "FIDO2 WebAuthn" + }, + "webAuthnDesc": { + "message": "使用任何具有 WebAuthn 功能的安全金鑰來存取您的帳戶。" + }, + "emailTitle": { + "message": "電子郵件" + }, + "emailDesc": { + "message": "使用電子郵件傳送驗證碼給您。" + }, + "loginUnavailable": { + "message": "登入不可用" + }, + "noTwoStepProviders": { + "message": "此帳戶已啟用兩步驟登入,但是本裝置不支援已設定的兩步驟登入方式。" + }, + "noTwoStepProviders2": { + "message": "請新增可以更好地跨裝置的兩步驟登入方法(例如驗證器應用程式)。" + }, + "twoStepOptions": { + "message": "兩步驟登入選項" + }, + "selfHostedEnvironment": { + "message": "自我託管環境" + }, + "selfHostedEnvironmentFooter": { + "message": "指定您本地托管的 Bitwarden 安裝之基礎 URL。" + }, + "customEnvironment": { + "message": "自訂環境" + }, + "customEnvironmentFooter": { + "message": "適用於進階使用者。您可以單獨指定各個服務的基礎 URL。" + }, + "baseUrl": { + "message": "伺服器 URL" + }, + "apiUrl": { + "message": "API 伺服器 URL" + }, + "webVaultUrl": { + "message": "網頁版密碼庫伺服器 URL" + }, + "identityUrl": { + "message": "身分伺服器 URL" + }, + "notificationsUrl": { + "message": "通知伺服器 URL" + }, + "iconsUrl": { + "message": "圖示伺服器 URL" + }, + "environmentSaved": { + "message": "已儲存環境 URL。" + }, + "ok": { + "message": "確定" + }, + "yes": { + "message": "是" + }, + "no": { + "message": "否" + }, + "overwritePassword": { + "message": "覆寫密碼" + }, + "learnMore": { + "message": "了解更多" + }, + "featureUnavailable": { + "message": "功能無法使用" + }, + "loggedOut": { + "message": "已登出" + }, + "loginExpired": { + "message": "您的登入會話已過期。" + }, + "logOutConfirmation": { + "message": "您確定要登出嗎?" + }, + "logOut": { + "message": "登出" + }, + "addNewLogin": { + "message": "新增登入資料" + }, + "addNewItem": { + "message": "新增項目" + }, + "addNewFolder": { + "message": "新增資料夾" + }, + "view": { + "message": "檢視" + }, + "account": { + "message": "帳戶" + }, + "loading": { + "message": "正在載入..." + }, + "lockVault": { + "message": "鎖定密碼庫" + }, + "passwordGenerator": { + "message": "密碼產生器" + }, + "contactUs": { + "message": "聯絡我們" + }, + "getHelp": { + "message": "尋求協助" + }, + "fileBugReport": { + "message": "Bug 回報" + }, + "blog": { + "message": "部落格" + }, + "followUs": { + "message": "關注我們" + }, + "syncVault": { + "message": "同步密碼庫" + }, + "changeMasterPass": { + "message": "變更主密碼" + }, + "changeMasterPasswordConfirmation": { + "message": "您可以在 Bitwarden 網頁版密碼庫變更主密碼。現在要前往嗎?" + }, + "fingerprintPhrase": { + "message": "指紋短語", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "yourAccountsFingerprint": { + "message": "您帳戶的指紋短語", + "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." + }, + "goToWebVault": { + "message": "前往網頁版密碼庫" + }, + "getMobileApp": { + "message": "取得行動裝置應用程式" + }, + "getBrowserExtension": { + "message": "取得瀏覽器擴充套件" + }, + "syncingComplete": { + "message": "同步完成" + }, + "syncingFailed": { + "message": "同步失敗" + }, + "yourVaultIsLocked": { + "message": "您的密碼庫已鎖定。請驗證身分以繼續。" + }, + "unlock": { + "message": "解鎖" + }, + "loggedInAsOn": { + "message": "已經在 $HOSTNAME$ 使用 $EMAIL$ 身份登入。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "hostname": { + "content": "$2", + "example": "bitwarden.com" + } + } + }, + "invalidMasterPassword": { + "message": "無效的主密碼" + }, + "twoStepLoginConfirmation": { + "message": "兩步驟登入需要您從其他設備(例如安全鑰匙、驗證器程式、SMS、手機或電子郵件)來驗證您的登入,這使您的賬戶更加安全。兩步驟登入可以在 Bitwarden 網頁版密碼庫啟用。現在要前往嗎?" + }, + "twoStepLogin": { + "message": "兩步驟登入" + }, + "vaultTimeout": { + "message": "密碼庫逾時時間" + }, + "vaultTimeoutDesc": { + "message": "選擇密碼庫多久之後才會逾時並執行選取動作。" + }, + "immediately": { + "message": "立即" + }, + "tenSeconds": { + "message": "10 秒鐘" + }, + "twentySeconds": { + "message": "20 秒鐘" + }, + "thirtySeconds": { + "message": "30 秒鐘" + }, + "oneMinute": { + "message": "1 分鐘" + }, + "twoMinutes": { + "message": "2 分鐘" + }, + "fiveMinutes": { + "message": "5 分鐘" + }, + "fifteenMinutes": { + "message": "15 分鐘" + }, + "thirtyMinutes": { + "message": "30 分鐘" + }, + "oneHour": { + "message": "1 小時" + }, + "fourHours": { + "message": "4 小時" + }, + "onIdle": { + "message": "系統閒置時" + }, + "onSleep": { + "message": "系統睡眠時" + }, + "onLocked": { + "message": "系統鎖定時" + }, + "onRestart": { + "message": "重新啟動時" + }, + "never": { + "message": "永不" + }, + "security": { + "message": "安全" + }, + "clearClipboard": { + "message": "清除剪貼簿", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "clearClipboardDesc": { + "message": "自動清除剪貼簿中複製的值。", + "description": "Clipboard is the operating system thing where you copy/paste data to on your device." + }, + "disableFavicon": { + "message": "停用網站圖示" + }, + "disableFaviconDesc": { + "message": "在您密碼庫的每個登入資料旁顯示一個可辨識的圖示。" + }, + "enableMinToTray": { + "message": "最小化至系統匣圖示" + }, + "enableMinToTrayDesc": { + "message": "最小化視窗時,改為於系統匣中顯示一個圖示。" + }, + "enableMinToMenuBar": { + "message": "最小化至選單列" + }, + "enableMinToMenuBarDesc": { + "message": "最小化視窗時,改為於選單列顯示一個圖示。" + }, + "enableCloseToTray": { + "message": "關閉至系統匣圖示" + }, + "enableCloseToTrayDesc": { + "message": "關閉視窗時,改為於系統匣中顯示一個圖示。" + }, + "enableCloseToMenuBar": { + "message": "關閉至選單列" + }, + "enableCloseToMenuBarDesc": { + "message": "關閉視窗時,改為於選單列中顯示一個圖示。" + }, + "enableTray": { + "message": "啟用系統匣圖示" + }, + "enableTrayDesc": { + "message": "總是在系統匣中顯示圖示。" + }, + "startToTray": { + "message": "啟動至系統匣圖示" + }, + "startToTrayDesc": { + "message": "應用程式首次啟動時,只在系統匣顯示一個圖示。" + }, + "startToMenuBar": { + "message": "啟動到選單列" + }, + "startToMenuBarDesc": { + "message": "應用程式首次啟動時,只在選單列顯示一個圖示。" + }, + "openAtLogin": { + "message": "登入時自動啟動" + }, + "openAtLoginDesc": { + "message": "登入時自動啟動 Bitwarden 桌面應用程式。" + }, + "alwaysShowDock": { + "message": "總是在 Dock 中顯示" + }, + "alwaysShowDockDesc": { + "message": "即使最小化到選單列,也在 Docker 中顯示 Bitwarden 圖示。" + }, + "confirmTrayTitle": { + "message": "確認禁用系統匣" + }, + "confirmTrayDesc": { + "message": "禁用此設定也將禁用所有其他系統匣相關設定。" + }, + "language": { + "message": "語言" + }, + "languageDesc": { + "message": "變更應用程式的語言。需要重新啟動程式。" + }, + "theme": { + "message": "主題" + }, + "themeDesc": { + "message": "變更應用程式的主題色彩。" + }, + "dark": { + "message": "深色", + "description": "Dark color" + }, + "light": { + "message": "淺色", + "description": "Light color" + }, + "copy": { + "message": "複製", + "description": "Copy to clipboard" + }, + "checkForUpdates": { + "message": "檢查更新" + }, + "version": { + "message": "版本 $VERSION_NUM$", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "restartToUpdate": { + "message": "重新啟動以更新" + }, + "restartToUpdateDesc": { + "message": "版本 $VERSION_NUM$ 已準備好安裝。您必須重新啟動此應用程式才能完成安裝。要立即重新啟動並更新嗎?", + "placeholders": { + "version_num": { + "content": "$1", + "example": "1.2.3" + } + } + }, + "updateAvailable": { + "message": "有可用的更新" + }, + "updateAvailableDesc": { + "message": "發現新版本。您要現在下載嗎?" + }, + "restart": { + "message": "重新啟動" + }, + "later": { + "message": "稍後" + }, + "noUpdatesAvailable": { + "message": "沒有可用的更新,您目前使用的是最新版本。" + }, + "updateError": { + "message": "更新錯誤" + }, + "unknown": { + "message": "不詳" + }, + "copyUsername": { + "message": "複製使用者名稱" + }, + "copyNumber": { + "message": "複製號碼", + "description": "Copy credit card number" + }, + "copySecurityCode": { + "message": "複製安全代碼", + "description": "Copy credit card security code (CVV)" + }, + "premiumMembership": { + "message": "進階會員" + }, + "premiumManage": { + "message": "管理會員資格" + }, + "premiumManageAlert": { + "message": "您可以在 Bitwarden 網頁版密碼庫管理你的會員資格。現在要前往嗎?" + }, + "premiumRefresh": { + "message": "刷新會員資格" + }, + "premiumNotCurrentMember": { + "message": "您目前不是進階會員。" + }, + "premiumSignUpAndGet": { + "message": "注冊成為進階會員並將獲得:" + }, + "premiumSignUpStorage": { + "message": "用於檔案附件的 1 GB 的加密檔案儲存空間。" + }, + "premiumSignUpTwoStep": { + "message": "YubiKey、FIDO U2F 和 Duo 等額外的兩步驟登入選項。" + }, + "premiumSignUpReports": { + "message": "密碼健康度檢查、提供帳戶體檢以及資料外洩報告,以保障您的密碼庫安全。" + }, + "premiumSignUpTotp": { + "message": "用於登入您的密碼庫的 TOTP 驗證碼 (2FA) 產生器。" + }, + "premiumSignUpSupport": { + "message": "優先客戶支援。" + }, + "premiumSignUpFuture": { + "message": "未來會增加更多進階功能,敬請期待!" + }, + "premiumPurchase": { + "message": "購買進階會員資格" + }, + "premiumPurchaseAlert": { + "message": "您可以在 Bitwarden 網頁版密碼庫購買進階會員資格。現在要前往嗎?" + }, + "premiumCurrentMember": { + "message": "您目前是進階會員!" + }, + "premiumCurrentMemberThanks": { + "message": "感謝您支持 Bitwarden 。" + }, + "premiumPrice": { + "message": "每年只需 $PRICE$!", + "placeholders": { + "price": { + "content": "$1", + "example": "$10" + } + } + }, + "refreshComplete": { + "message": "刷新完成" + }, + "passwordHistory": { + "message": "密碼歷史記錄" + }, + "clear": { + "message": "清除", + "description": "To clear something out. example: To clear browser history." + }, + "noPasswordsInList": { + "message": "沒有可列出的密碼。" + }, + "undo": { + "message": "復原" + }, + "redo": { + "message": "重做" + }, + "cut": { + "message": "剪切", + "description": "Cut to clipboard" + }, + "paste": { + "message": "粘貼", + "description": "Paste from clipboard" + }, + "selectAll": { + "message": "全選" + }, + "zoomIn": { + "message": "放大" + }, + "zoomOut": { + "message": "縮小" + }, + "resetZoom": { + "message": "重設縮放" + }, + "toggleFullScreen": { + "message": "切換全螢幕" + }, + "reload": { + "message": "重新載入" + }, + "toggleDevTools": { + "message": "切換開發人員工具" + }, + "minimize": { + "message": "最小化", + "description": "Minimize window" + }, + "zoom": { + "message": "縮放" + }, + "bringAllToFront": { + "message": "全部移至最上層", + "description": "Bring all windows to front (foreground)" + }, + "aboutBitwarden": { + "message": "關於 Bitwarden" + }, + "services": { + "message": "服務" + }, + "hideBitwarden": { + "message": "隱藏 Bitwarden" + }, + "hideOthers": { + "message": "隱藏其他" + }, + "showAll": { + "message": "顯示全部" + }, + "quitBitwarden": { + "message": "結束 Bitwarden" + }, + "valueCopied": { + "message": "$VALUE$ 已複製", + "description": "Value has been copied to the clipboard.", + "placeholders": { + "value": { + "content": "$1", + "example": "Password" + } + } + }, + "help": { + "message": "說明" + }, + "window": { + "message": "視窗" + }, + "checkPassword": { + "message": "檢查密碼是否已外洩。" + }, + "passwordExposed": { + "message": "此密碼已外洩了 $VALUE$ 次,應立即變更密碼。", + "placeholders": { + "value": { + "content": "$1", + "example": "2" + } + } + }, + "passwordSafe": { + "message": "任何已知的外洩密碼資料庫中都沒有此密碼,它目前是安全的。" + }, + "baseDomain": { + "message": "基底網域", + "description": "Domain name. Ex. website.com" + }, + "domainName": { + "message": "網域名稱", + "description": "Domain name. Ex. website.com" + }, + "host": { + "message": "主機", + "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." + }, + "exact": { + "message": "完全相符" + }, + "startsWith": { + "message": "開始於" + }, + "regEx": { + "message": "規則運算式", + "description": "A programming term, also known as 'RegEx'." + }, + "matchDetection": { + "message": "一致性偵測", + "description": "URI match detection for auto-fill." + }, + "defaultMatchDetection": { + "message": "預設一致性偵測", + "description": "Default URI match detection for auto-fill." + }, + "toggleOptions": { + "message": "切換選項" + }, + "organization": { + "message": "組織", + "description": "An entity of multiple related people (ex. a team or business organization)." + }, + "default": { + "message": "預設" + }, + "exit": { + "message": "結束" + }, + "showHide": { + "message": "顯示/隱藏", + "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." + }, + "hideToTray": { + "message": "隱藏至系統匣" + }, + "alwaysOnTop": { + "message": "總在最上層", + "description": "Application window should always stay on top of other windows" + }, + "dateUpdated": { + "message": "更新於", + "description": "ex. Date this item was updated" + }, + "datePasswordUpdated": { + "message": "密碼更新於", + "description": "ex. Date this password was updated" + }, + "exportVault": { + "message": "匯出密碼庫" + }, + "fileFormat": { + "message": "檔案格式" + }, + "warning": { + "message": "警告", + "description": "WARNING (should stay in capitalized letters if the language permits)" + }, + "confirmVaultExport": { + "message": "確認匯出密碼庫" + }, + "exportWarningDesc": { + "message": "此匯出包含未加密格式的密碼庫檔案。您不應將它存放或經由不安全的方式(例如電子郵件)傳送。用完後請立即將它刪除。" + }, + "encExportKeyWarningDesc": { + "message": "將使用您帳戶的加密金鑰來加密匯出資料,若您更新了帳戶的加密金鑰,請重新匯出,才有辦法解密匯出的檔案。" + }, + "encExportAccountWarningDesc": { + "message": "每個 Bitwarden 使用者帳戶的帳戶加密金鑰都不相同,因此無法將已加密匯出的檔案匯入至不同帳戶中。" + }, + "noOrganizationsList": { + "message": "您沒有加入任何組織。組織允許您與其他使用者安全地共用項目。" + }, + "noCollectionsInList": { + "message": "沒有可列出的集合。" + }, + "ownership": { + "message": "所有權" + }, + "whoOwnsThisItem": { + "message": "誰擁有這個項目?" + }, + "strong": { + "message": "強", + "description": "ex. A strong password. Scale: Weak -> Good -> Strong" + }, + "good": { + "message": "好", + "description": "ex. A good password. Scale: Weak -> Good -> Strong" + }, + "weak": { + "message": "弱", + "description": "ex. A weak password. Scale: Weak -> Good -> Strong" + }, + "weakMasterPassword": { + "message": "主密碼強度太弱" + }, + "weakMasterPasswordDesc": { + "message": "您設定的主密碼很脆弱。您應該使用高強度的密碼(或密碼短語)來正確保護您的 bitwarden 帳戶。仍要使用這組主密碼嗎?" + }, + "pin": { + "message": "PIN 碼", + "description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device." + }, + "unlockWithPin": { + "message": "使用 PIN 碼解鎖" + }, + "setYourPinCode": { + "message": "設定您用來解鎖 Bitwarden 的 PIN 碼。您的 PIN 設定將在您完全結束本應用程式時被重設。" + }, + "pinRequired": { + "message": "需要 PIN 碼。" + }, + "invalidPin": { + "message": "無效的 PIN 碼。" + }, + "unlockWithWindowsHello": { + "message": "使用 Windows Hello 解鎖" + }, + "windowsHelloConsentMessage": { + "message": "驗證 Bitwarden。" + }, + "unlockWithTouchId": { + "message": "使用 Touch ID 解鎖" + }, + "touchIdConsentMessage": { + "message": "解鎖您的密碼庫" + }, + "noAutoPromptWindowsHello": { + "message": "啟動時不要提示使用 Windows Hello。" + }, + "noAutoPromptTouchId": { + "message": "啟動時不要提示使用 Touch ID。" + }, + "lockWithMasterPassOnRestart": { + "message": "重啟後使用主密碼鎖定" + }, + "preferences": { + "message": "偏好設定" + }, + "enableMenuBar": { + "message": "啟用選單列圖示" + }, + "enableMenuBarDesc": { + "message": "總是在選單列中顯示圖示。" + }, + "hideToMenuBar": { + "message": "隱藏至選單列" + }, + "selectOneCollection": { + "message": "您必須至少選擇一個集合。" + }, + "premiumUpdated": { + "message": "您已升級至進階會員。" + }, + "restore": { + "message": "還原" + }, + "premiumManageAlertAppStore": { + "message": "可到 App Store 管理訂閱內容。您現在要前往 App Store 嗎?" + }, + "legal": { + "message": "法律條款", + "description": "Noun. As in 'legal documents', like our terms of service and privacy policy." + }, + "termsOfService": { + "message": "服務條款" + }, + "privacyPolicy": { + "message": "隱私權政策" + }, + "unsavedChangesConfirmation": { + "message": "您確定要離開嗎?現在離開將不會儲存目前的資訊。" + }, + "unsavedChangesTitle": { + "message": "變更未被儲存" + }, + "clone": { + "message": "複製" + }, + "passwordGeneratorPolicyInEffect": { + "message": "一個或多個組織原則正影響密碼產生器設定。" + }, + "vaultTimeoutAction": { + "message": "密碼庫逾時動作" + }, + "vaultTimeoutActionLockDesc": { + "message": "鎖定密碼庫後需要重新輸入主密碼才能再次存取。" + }, + "vaultTimeoutActionLogOutDesc": { + "message": "登出密碼庫後需要重新驗證才能再次存取。" + }, + "lock": { + "message": "鎖定", + "description": "Verb form: to make secure or inaccesible by" + }, + "trash": { + "message": "垃圾桶", + "description": "Noun: a special folder to hold deleted items" + }, + "searchTrash": { + "message": "搜尋垃圾桶" + }, + "permanentlyDeleteItem": { + "message": "永久刪除項目" + }, + "permanentlyDeleteItemConfirmation": { + "message": "您確定要永久刪除此項目嗎?" + }, + "permanentlyDeletedItem": { + "message": "項目已永久刪除" + }, + "restoreItem": { + "message": "還原項目" + }, + "restoreItemConfirmation": { + "message": "您確定要恢復此項目嗎?" + }, + "restoredItem": { + "message": "項目已還原" + }, + "permanentlyDelete": { + "message": "永久刪除" + }, + "vaultTimeoutLogOutConfirmation": { + "message": "選擇登出將會在密碼庫逾時後移除對密碼庫的所有存取權限,若要重新驗證則需連線網路。確定要使用此設定嗎?" + }, + "vaultTimeoutLogOutConfirmationTitle": { + "message": "逾時動作確認" + }, + "enterpriseSingleSignOn": { + "message": "企業單一登入" + }, + "setMasterPassword": { + "message": "設定主密碼" + }, + "ssoCompleteRegistration": { + "message": "要完成 SSO 登入設定,請設定一組主密碼以存取和保護您的密碼庫。" + }, + "newMasterPass": { + "message": "新的主密碼" + }, + "confirmNewMasterPass": { + "message": "確認新的主密碼" + }, + "masterPasswordPolicyInEffect": { + "message": "一個或多個組織原則要求您的主密碼須符合下列條件:" + }, + "policyInEffectMinComplexity": { + "message": "最小複雜度為 $SCORE$", + "placeholders": { + "score": { + "content": "$1", + "example": "4" + } + } + }, + "policyInEffectMinLength": { + "message": "最小長度為 $LENGTH$", + "placeholders": { + "length": { + "content": "$1", + "example": "14" + } + } + }, + "policyInEffectUppercase": { + "message": "至少包含一個大寫字元" + }, + "policyInEffectLowercase": { + "message": "至少包含一個小寫字元" + }, + "policyInEffectNumbers": { + "message": "至少包含一個數字" + }, + "policyInEffectSpecial": { + "message": "至少包含一個下列特殊字元:$CHARS$", + "placeholders": { + "chars": { + "content": "$1", + "example": "!@#$%^&*" + } + } + }, + "masterPasswordPolicyRequirementsNotMet": { + "message": "新的主密碼不符合原則要求。" + }, + "acceptPolicies": { + "message": "選中此選取框,代表您同意下列項目:" + }, + "acceptPoliciesError": { + "message": "尚未接受服務條款與隱私權保護政策。" + }, + "enableBrowserIntegration": { + "message": "開啟瀏覽器整合" + }, + "enableBrowserIntegrationDesc": { + "message": "瀏覽器整合用於在瀏覽器中提供生物特徵辨識。" + }, + "browserIntegrationMasOnlyTitle": { + "message": "不支援瀏覽器整合" + }, + "browserIntegrationMasOnlyDesc": { + "message": "很遺憾,目前僅 Mac App Store 版本支援瀏覽器整合功能。" + }, + "browserIntegrationWindowsStoreTitle": { + "message": "不支援瀏覽器整合" + }, + "browserIntegrationWindowsStoreDesc": { + "message": "很遺憾,目前的 Windows Store 版本尚不支援瀏覽器整合功能。" + }, + "enableBrowserIntegrationFingerprint": { + "message": "要求瀏覽器整合驗證" + }, + "enableBrowserIntegrationFingerprintDesc": { + "message": "在您的桌面和瀏覽器閒建立連綫時,要求驗證指紋短語以實現一個額外的安全層。此選項啓用後,每次建立連綫都需要使用者干預和驗證。" + }, + "approve": { + "message": "核准" + }, + "verifyBrowserTitle": { + "message": "確認與瀏覽器間的連線" + }, + "verifyBrowserDesc": { + "message": "請確保顯示的指紋與瀏覽器擴充套件中顯示的指紋一致。" + }, + "biometricsNotEnabledTitle": { + "message": "生物特徵辨識未啟用" + }, + "biometricsNotEnabledDesc": { + "message": "需先在桌面應用程式的設定中啟用生物特徵辨識,才能使用瀏覽器的生物特徵辨識。" + }, + "personalOwnershipSubmitError": { + "message": "由於某個企業原則,您被限制為儲存項目到您的個人密碼庫。將擁有權變更為組織,並從可用的集合中選擇。" + }, + "hintEqualsPassword": { + "message": "密碼提示不能與您的密碼相同。" + }, + "personalOwnershipPolicyInEffect": { + "message": "組織原則正在影響您的擁有權選項。" + }, + "allSends": { + "message": "所有 Send", + "description": "'Sends' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTypeFile": { + "message": "檔案" + }, + "sendTypeText": { + "message": "文字" + }, + "searchSends": { + "message": "搜尋 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editSend": { + "message": "編輯 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "myVault": { + "message": "密碼庫" + }, + "text": { + "message": "文字" + }, + "deletionDate": { + "message": "刪除日期" + }, + "deletionDateDesc": { + "message": "此 Send 將在指定的日期和時間後被永久刪除。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "expirationDate": { + "message": "逾期日期" + }, + "expirationDateDesc": { + "message": "如果設定此選項,對此 Send 的存取將在指定的日期和時間後逾期。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "maxAccessCount": { + "message": "最大存取次數" + }, + "maxAccessCountDesc": { + "message": "如果設定此選項,當達到最大存取次數時,使用者將無法再次存取此 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "currentAccessCount": { + "message": "目前存取次數" + }, + "disableSend": { + "message": "停用此 Send 以阻止任何人存取它。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendPasswordDesc": { + "message": "可選。使用者需提供密碼才能存取此 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendNotesDesc": { + "message": "關於此 Send 的私人備註。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLink": { + "message": "Send 連結", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendLinkLabel": { + "message": "Send 連結", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "textHiddenByDefault": { + "message": "存取此 Send 時,預設隱藏文字内容", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createdSend": { + "message": "Send 已創建", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "editedSend": { + "message": "Send 已編輯", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "deletedSend": { + "message": "Send 已刪除", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "newPassword": { + "message": "新密碼" + }, + "whatTypeOfSend": { + "message": "這是什麽類型的 Send?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "createSend": { + "message": "創建 Send", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendTextDesc": { + "message": "您想要傳送的文字。" + }, + "sendFileDesc": { + "message": "您想要傳送的檔案。" + }, + "days": { + "message": "$DAYS$ 天", + "placeholders": { + "days": { + "content": "$1", + "example": "1" + } + } + }, + "oneDay": { + "message": "1 天" + }, + "custom": { + "message": "自訂" + }, + "deleteSendConfirmation": { + "message": "您確定要刪除此 Send 嗎?", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkToClipboard": { + "message": "複製 Send 連結到剪貼簿", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copySendLinkOnSave": { + "message": "储存時複製連結到剪貼簿以便分享此 Send。" + }, + "sendDisabled": { + "message": "Send 已停用", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "sendDisabledWarning": { + "message": "由於企業原則限制,您只能刪除現有的 Send。", + "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." + }, + "copyLink": { + "message": "複製連結" + }, + "disabled": { + "message": "已停用" + }, + "maxAccessCountReached": { + "message": "已達最大存取次數" + }, + "expired": { + "message": "已逾期" + }, + "pendingDeletion": { + "message": "等待刪除" + }, + "webAuthnAuthenticate": { + "message": "驗證 WebAuthn" + }, + "hideEmail": { + "message": "對收件人隱藏我的電子郵件位址。" + }, + "sendOptionsPolicyInEffect": { + "message": "一個或多個組織原則正影響您的 Send 選項。" + }, + "emailVerificationRequired": { + "message": "需要驗證電子郵件" + }, + "emailVerificationRequiredDesc": { + "message": "必須驗證您的電子郵件才能使用此功能。" + }, + "passwordPrompt": { + "message": "重新詢問主密碼" + }, + "passwordConfirmation": { + "message": "確認主密碼" + }, + "passwordConfirmationDesc": { + "message": "此操作受到保護。若要繼續,請重新輸入您的主密碼以驗證您的身份。" + }, + "updatedMasterPassword": { + "message": "已更新主密碼" + }, + "updateMasterPassword": { + "message": "更新主密碼" + }, + "updateMasterPasswordWarning": { + "message": "您的主密碼最近被您的組織管理者變更過。要存取密碼庫,您必須現在更新主密碼。繼續操作會登出目前的登入階段,要求您重新登入。其他裝置上使用中的登入階段可能持續最長一個小時。" + }, + "hours": { + "message": "小時" + }, + "minutes": { + "message": "分鐘" + }, + "vaultTimeoutPolicyInEffect": { + "message": "您的組織原則正在影響您的密碼庫逾時時間。密碼庫逾時時間最多可以設定到 $HOURS$ 小時 $MINUTES$ 分鐘。", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutTooLarge": { + "message": "您的密碼庫逾時時間超過組織設定的限制。" + }, + "resetPasswordPolicyAutoEnroll": { + "message": "自動註冊" + }, + "resetPasswordAutoEnrollInviteWarning": { + "message": "此組織有一個可以為您自動註冊密碼重設的企業原則。註冊後將允許組織管理員變更您的主密碼。" + }, + "vaultExportDisabled": { + "message": "密碼庫匯出已停用" + }, + "personalVaultExportPolicyInEffect": { + "message": "一個或多個組織原則禁止您匯出個人密碼庫。" + }, + "addAccount": { + "message": "新增帳戶" + }, + "removeMasterPassword": { + "message": "移除主密碼" + }, + "removedMasterPassword": { + "message": "主密碼已移除。" + }, + "convertOrganizationEncryptionDesc": { + "message": "$ORGANIZATION$ 使用自我托管金輪伺服器 SSO。這個组织的成員登入時将不再需要主密碼。", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "leaveOrganization": { + "message": "離開組織" + }, + "leaveOrganizationConfirmation": { + "message": "您確定要離開這個組織嗎?" + }, + "leftOrganization": { + "message": "您已離開此組織。" + }, + "ssoKeyConnectorUnavailable": { + "message": "無法連線到 Key Connector。請稍後再試。" + }, + "lockAllVaults": { + "message": "鎖定所有密碼庫" + }, + "accountLimitReached": { + "message": "最多只能同時登入 5 隻帳戶。" + }, + "accountPreferences": { + "message": "偏好設定" + }, + "appPreferences": { + "message": "應用程式設定(所有帳戶)" + }, + "accountSwitcherLimitReached": { + "message": "已達帳戶數量上限。登出一個帳戶後再加入其他的帳戶。" + }, + "settingsTitle": { + "message": "$EMAIL$ 的應用程式設定", + "placeholders": { + "email": { + "content": "$1", + "example": "jdoe@example.com" + } + } + }, + "switchAccount": { + "message": "切換帳戶" + }, + "options": { + "message": "選項" + }, + "sessionTimeout": { + "message": "您的登入階段已逾時,請返回並嘗試重新登入。" + }, + "exportingPersonalVaultTitle": { + "message": "匯出個人密碼庫" + }, + "exportingPersonalVaultDescription": { + "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫。組織密碼庫的項目不包含在內。", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "generator": { + "message": "產生器" + }, + "whatWouldYouLikeToGenerate": { + "message": "您想要產生什麼?" + }, + "passwordType": { + "message": "密碼類型" + }, + "regenerateUsername": { + "message": "重新產生使用者名稱" + }, + "generateUsername": { + "message": "產生使用者名稱" + }, + "usernameType": { + "message": "使用者名稱類型" + }, + "plusAddressedEmail": { + "message": "加號地址電子郵件" + }, + "plusAddressedEmailDesc": { + "message": "使用您的電子郵件提供者的子地址功能。" + }, + "catchallEmail": { + "message": "Catch-all 電子郵件" + }, + "catchallEmailDesc": { + "message": "使用您的網域配置的 Catch-all 收件匣。" + }, + "random": { + "message": "隨機" + }, + "randomWord": { + "message": "隨機單字" + }, + "websiteName": { + "message": "網站名稱" + }, + "service": { + "message": "服務" + } +} diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts new file mode 100644 index 0000000000..66cc06a118 --- /dev/null +++ b/apps/desktop/src/main.ts @@ -0,0 +1,218 @@ +import * as path from "path"; + +import { app } from "electron"; + +import { StateFactory } from "jslib-common/factories/stateFactory"; +import { GlobalState } from "jslib-common/models/domain/globalState"; +import { StateService } from "jslib-common/services/state.service"; +import { ElectronLogService } from "jslib-electron/services/electronLog.service"; +import { ElectronMainMessagingService } from "jslib-electron/services/electronMainMessaging.service"; +import { ElectronStorageService } from "jslib-electron/services/electronStorage.service"; +import { TrayMain } from "jslib-electron/tray.main"; +import { UpdaterMain } from "jslib-electron/updater.main"; +import { WindowMain } from "jslib-electron/window.main"; + +import { BiometricMain } from "./main/biometric/biometric.main"; +import { DesktopCredentialStorageListener } from "./main/desktopCredentialStorageListener"; +import { MenuMain } from "./main/menu/menu.main"; +import { MessagingMain } from "./main/messaging.main"; +import { NativeMessagingMain } from "./main/nativeMessaging.main"; +import { PowerMonitorMain } from "./main/powerMonitor.main"; +import { Account } from "./models/account"; +import { I18nService } from "./services/i18n.service"; + +export class Main { + logService: ElectronLogService; + i18nService: I18nService; + storageService: ElectronStorageService; + messagingService: ElectronMainMessagingService; + stateService: StateService; + desktopCredentialStorageListener: DesktopCredentialStorageListener; + + windowMain: WindowMain; + messagingMain: MessagingMain; + updaterMain: UpdaterMain; + menuMain: MenuMain; + powerMonitorMain: PowerMonitorMain; + trayMain: TrayMain; + biometricMain: BiometricMain; + nativeMessagingMain: NativeMessagingMain; + + constructor() { + // Set paths for portable builds + let appDataPath = null; + if (process.env.BITWARDEN_APPDATA_DIR != null) { + appDataPath = process.env.BITWARDEN_APPDATA_DIR; + } else if (process.platform === "win32" && process.env.PORTABLE_EXECUTABLE_DIR != null) { + appDataPath = path.join(process.env.PORTABLE_EXECUTABLE_DIR, "bitwarden-appdata"); + } else if (process.platform === "linux" && process.env.SNAP_USER_DATA != null) { + appDataPath = path.join(process.env.SNAP_USER_DATA, "appdata"); + } + + app.on("ready", () => { + // on ready stuff... + }); + + if (appDataPath != null) { + app.setPath("userData", appDataPath); + } + app.setPath("logs", path.join(app.getPath("userData"), "logs")); + + const args = process.argv.slice(1); + const watch = args.some((val) => val === "--watch"); + + if (watch) { + // eslint-disable-next-line + require("electron-reload")(__dirname, {}); + } + + this.logService = new ElectronLogService(null, app.getPath("userData")); + this.i18nService = new I18nService("en", "./locales/"); + + const storageDefaults: any = {}; + // Default vault timeout to "on restart", and action to "lock" + storageDefaults["global.vaultTimeout"] = -1; + storageDefaults["global.vaultTimeoutAction"] = "lock"; + this.storageService = new ElectronStorageService(app.getPath("userData"), storageDefaults); + + // TODO: this state service will have access to on disk storage, but not in memory storage. + // If we could get this to work using the stateService singleton that the rest of the app uses we could save + // ourselves from some hacks, like having to manually update the app menu vs. the menu subscribing to events. + this.stateService = new StateService( + this.storageService, + null, + this.logService, + null, + new StateFactory(GlobalState, Account), + false // Do not use disk caching because this will get out of sync with the renderer service + ); + + this.windowMain = new WindowMain( + this.stateService, + this.logService, + true, + undefined, + undefined, + (arg) => this.processDeepLink(arg), + (win) => this.trayMain.setupWindowListeners(win) + ); + this.messagingMain = new MessagingMain(this, this.stateService); + this.updaterMain = new UpdaterMain( + this.i18nService, + this.windowMain, + "desktop", + null, + null, + null, + "bitwarden" + ); + this.menuMain = new MenuMain(this); + this.powerMonitorMain = new PowerMonitorMain(this); + this.trayMain = new TrayMain(this.windowMain, this.i18nService, this.stateService); + + this.messagingService = new ElectronMainMessagingService(this.windowMain, (message) => { + this.messagingMain.onMessage(message); + }); + + if (process.platform === "win32") { + // eslint-disable-next-line + const BiometricWindowsMain = require("./main/biometric/biometric.windows.main").default; + this.biometricMain = new BiometricWindowsMain( + this.i18nService, + this.windowMain, + this.stateService, + this.logService + ); + } else if (process.platform === "darwin") { + // eslint-disable-next-line + const BiometricDarwinMain = require("./main/biometric/biometric.darwin.main").default; + this.biometricMain = new BiometricDarwinMain(this.i18nService, this.stateService); + } + + this.desktopCredentialStorageListener = new DesktopCredentialStorageListener( + "Bitwarden", + this.biometricMain + ); + + this.nativeMessagingMain = new NativeMessagingMain( + this.logService, + this.windowMain, + app.getPath("userData"), + app.getPath("exe") + ); + } + + bootstrap() { + this.desktopCredentialStorageListener.init(); + this.windowMain.init().then( + async () => { + const locale = await this.stateService.getLocale(); + await this.i18nService.init(locale != null ? locale : app.getLocale()); + this.messagingMain.init(); + this.menuMain.init(); + await this.trayMain.init("Bitwarden", [ + { + label: this.i18nService.t("lockVault"), + enabled: false, + id: "lockVault", + click: () => this.messagingService.send("lockVault"), + }, + ]); + if (await this.stateService.getEnableStartToTray()) { + this.trayMain.hideToTray(); + } + this.powerMonitorMain.init(); + await this.updaterMain.init(); + if (this.biometricMain != null) { + await this.biometricMain.init(); + } + + if (await this.stateService.getEnableBrowserIntegration()) { + this.nativeMessagingMain.listen(); + } + + app.removeAsDefaultProtocolClient("bitwarden"); + if (process.env.NODE_ENV === "development" && process.platform === "win32") { + // Fix development build on Windows requirering a different protocol client + app.setAsDefaultProtocolClient("bitwarden", process.execPath, [ + process.argv[1], + path.resolve(process.argv[2]), + ]); + } else { + app.setAsDefaultProtocolClient("bitwarden"); + } + + // Process protocol for macOS + app.on("open-url", (event, url) => { + event.preventDefault(); + this.processDeepLink([url]); + }); + + // Handle window visibility events + this.windowMain.win.on("hide", () => { + this.messagingService.send("windowHidden"); + }); + this.windowMain.win.on("minimize", () => { + this.messagingService.send("windowHidden"); + }); + }, + (e: any) => { + // eslint-disable-next-line + console.error(e); + } + ); + } + + private processDeepLink(argv: string[]): void { + argv + .filter((s) => s.indexOf("bitwarden://") === 0) + .forEach((s) => { + const url = new URL(s); + const code = url.searchParams.get("code"); + const receivedState = url.searchParams.get("state"); + if (code != null && receivedState != null) { + this.messagingService.send("ssoCallback", { code: code, state: receivedState }); + } + }); + } +} diff --git a/apps/desktop/src/main/biometric/biometric.darwin.main.ts b/apps/desktop/src/main/biometric/biometric.darwin.main.ts new file mode 100644 index 0000000000..03ee546033 --- /dev/null +++ b/apps/desktop/src/main/biometric/biometric.darwin.main.ts @@ -0,0 +1,36 @@ +import { ipcMain, systemPreferences } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +import { BiometricMain } from "../biometric/biometric.main"; + +export default class BiometricDarwinMain implements BiometricMain { + isError = false; + + constructor(private i18nservice: I18nService, private stateService: StateService) {} + + async init() { + await this.stateService.setEnableBiometric(await this.supportsBiometric()); + await this.stateService.setBiometricText("unlockWithTouchId"); + await this.stateService.setNoAutoPromptBiometricsText("noAutoPromptTouchId"); + + // eslint-disable-next-line + ipcMain.on("biometric", async (event: any, message: any) => { + event.returnValue = await this.authenticateBiometric(); + }); + } + + supportsBiometric(): Promise { + return Promise.resolve(systemPreferences.canPromptTouchID()); + } + + async authenticateBiometric(): Promise { + try { + await systemPreferences.promptTouchID(this.i18nservice.t("touchIdConsentMessage")); + return true; + } catch { + return false; + } + } +} diff --git a/apps/desktop/src/main/biometric/biometric.main.ts b/apps/desktop/src/main/biometric/biometric.main.ts new file mode 100644 index 0000000000..a8557c4032 --- /dev/null +++ b/apps/desktop/src/main/biometric/biometric.main.ts @@ -0,0 +1,6 @@ +export abstract class BiometricMain { + isError: boolean; + init: () => Promise; + supportsBiometric: () => Promise; + authenticateBiometric: () => Promise; +} diff --git a/apps/desktop/src/main/biometric/biometric.windows.main.ts b/apps/desktop/src/main/biometric/biometric.windows.main.ts new file mode 100644 index 0000000000..aac4f4dc6d --- /dev/null +++ b/apps/desktop/src/main/biometric/biometric.windows.main.ts @@ -0,0 +1,146 @@ +import { ipcMain } from "electron"; +import forceFocus from "forcefocus"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { WindowMain } from "jslib-electron/window.main"; + +import { BiometricMain } from "src/main/biometric/biometric.main"; + +export default class BiometricWindowsMain implements BiometricMain { + isError = false; + + private windowsSecurityCredentialsUiModule: any; + + constructor( + private i18nservice: I18nService, + private windowMain: WindowMain, + private stateService: StateService, + private logService: LogService + ) {} + + async init() { + this.windowsSecurityCredentialsUiModule = this.getWindowsSecurityCredentialsUiModule(); + let supportsBiometric = false; + try { + supportsBiometric = await this.supportsBiometric(); + } catch { + // store error state so we can let the user know on the settings page + this.isError = true; + } + await this.stateService.setEnableBiometric(supportsBiometric); + await this.stateService.setBiometricText("unlockWithWindowsHello"); + await this.stateService.setNoAutoPromptBiometricsText("noAutoPromptWindowsHello"); + + ipcMain.on("biometric", async (event: any, message: any) => { + event.returnValue = await this.authenticateBiometric(); + }); + } + + async supportsBiometric(): Promise { + const availability = await this.checkAvailabilityAsync(); + + return this.getAllowedAvailabilities().includes(availability); + } + + async authenticateBiometric(): Promise { + const module = this.getWindowsSecurityCredentialsUiModule(); + if (module == null) { + return false; + } + + const verification = await this.requestVerificationAsync( + this.i18nservice.t("windowsHelloConsentMessage") + ); + + return verification === module.UserConsentVerificationResult.verified; + } + + getWindowsSecurityCredentialsUiModule(): any { + try { + if (this.windowsSecurityCredentialsUiModule == null && this.getWindowsMajorVersion() >= 10) { + this.windowsSecurityCredentialsUiModule = require("@nodert-win10-rs4/windows.security.credentials.ui"); + } + return this.windowsSecurityCredentialsUiModule; + } catch { + this.isError = true; + } + return null; + } + + async checkAvailabilityAsync(): Promise { + const module = this.getWindowsSecurityCredentialsUiModule(); + if (module != null) { + // eslint-disable-next-line + return new Promise((resolve, reject) => { + try { + module.UserConsentVerifier.checkAvailabilityAsync((error: Error, result: any) => { + if (error) { + return resolve(null); + } + return resolve(result); + }); + } catch { + this.isError = true; + return resolve(null); + } + }); + } + return Promise.resolve(null); + } + + async requestVerificationAsync(message: string): Promise { + const module = this.getWindowsSecurityCredentialsUiModule(); + if (module != null) { + return new Promise((resolve, reject) => { + try { + module.UserConsentVerifier.requestVerificationAsync( + message, + (error: Error, result: any) => { + if (error) { + return resolve(null); + } + return resolve(result); + } + ); + + forceFocus.focusWindow(this.windowMain.win); + } catch (error) { + this.isError = true; + return reject(error); + } + }); + } + return Promise.resolve(null); + } + + getAllowedAvailabilities(): any[] { + try { + const module = this.getWindowsSecurityCredentialsUiModule(); + if (module != null) { + return [ + module.UserConsentVerifierAvailability.available, + module.UserConsentVerifierAvailability.deviceBusy, + ]; + } + } catch { + /*Ignore error*/ + } + return []; + } + + getWindowsMajorVersion(): number { + if (process.platform !== "win32") { + return -1; + } + try { + // eslint-disable-next-line + const version = require("os").release(); + return Number.parseInt(version.split(".")[0], 10); + } catch { + this.logService.error("Unable to resolve windows major version number"); + } + return -1; + } +} diff --git a/apps/desktop/src/main/desktopCredentialStorageListener.ts b/apps/desktop/src/main/desktopCredentialStorageListener.ts new file mode 100644 index 0000000000..1c6d06b019 --- /dev/null +++ b/apps/desktop/src/main/desktopCredentialStorageListener.ts @@ -0,0 +1,51 @@ +import { ipcMain } from "electron"; +import { deletePassword, getPassword, setPassword } from "keytar"; + +import { BiometricMain } from "./biometric/biometric.main"; + +const AuthRequiredSuffix = "_biometric"; +const AuthenticatedActions = ["getPassword"]; + +export class DesktopCredentialStorageListener { + constructor(private serviceName: string, private biometricService: BiometricMain) {} + + init() { + ipcMain.on("keytar", async (event: any, message: any) => { + try { + let serviceName = this.serviceName; + message.keySuffix = "_" + (message.keySuffix ?? ""); + if (message.keySuffix !== "_") { + serviceName += message.keySuffix; + } + + const authenticationRequired = + AuthenticatedActions.includes(message.action) && AuthRequiredSuffix === message.keySuffix; + const authenticated = !authenticationRequired || (await this.authenticateBiometric()); + + let val: string | boolean = null; + if (authenticated && message.action && message.key) { + if (message.action === "getPassword") { + val = await getPassword(serviceName, message.key); + } else if (message.action === "hasPassword") { + const result = await getPassword(serviceName, message.key); + val = result != null; + } else if (message.action === "setPassword" && message.value) { + await setPassword(serviceName, message.key, message.value); + } else if (message.action === "deletePassword") { + await deletePassword(serviceName, message.key); + } + } + event.returnValue = val; + } catch { + event.returnValue = null; + } + }); + } + + private async authenticateBiometric(): Promise { + if (this.biometricService) { + return await this.biometricService.authenticateBiometric(); + } + return false; + } +} diff --git a/apps/desktop/src/main/menu/menu.about.ts b/apps/desktop/src/main/menu/menu.about.ts new file mode 100644 index 0000000000..10ce23d123 --- /dev/null +++ b/apps/desktop/src/main/menu/menu.about.ts @@ -0,0 +1,87 @@ +import { BrowserWindow, clipboard, dialog, MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { UpdaterMain } from "jslib-electron/updater.main"; +import { isMacAppStore, isSnapStore, isWindowsStore } from "jslib-electron/utils"; + +import { IMenubarMenu } from "./menubar"; + +export class AboutMenu implements IMenubarMenu { + readonly id: string = "about"; + + get label(): string { + return ""; + } + + get items(): MenuItemConstructorOptions[] { + return [this.separator, this.checkForUpdates, this.aboutBitwarden]; + } + + private readonly _i18nService: I18nService; + private readonly _updater: UpdaterMain; + private readonly _window: BrowserWindow; + private readonly _version: string; + + constructor( + i18nService: I18nService, + version: string, + window: BrowserWindow, + updater: UpdaterMain + ) { + this._i18nService = i18nService; + this._updater = updater; + this._version = version; + this._window = window; + } + + private get separator(): MenuItemConstructorOptions { + return { type: "separator" }; + } + + private get checkForUpdates(): MenuItemConstructorOptions { + return { + id: "checkForUpdates", + label: this.localize("checkForUpdates"), + visible: !isWindowsStore() && !isSnapStore() && !isMacAppStore(), + click: () => this.checkForUpdate(), + }; + } + + private get aboutBitwarden(): MenuItemConstructorOptions { + return { + id: "aboutBitwarden", + label: this.localize("aboutBitwarden"), + click: async () => { + const aboutInformation = + this.localize("version", this._version) + + "\nShell " + + process.versions.electron + + "\nRenderer " + + process.versions.chrome + + "\nNode " + + process.versions.node + + "\nArchitecture " + + process.arch; + const result = await dialog.showMessageBox(this._window, { + title: "Bitwarden", + message: "Bitwarden", + detail: aboutInformation, + type: "info", + noLink: true, + buttons: [this.localize("ok"), this.localize("copy")], + }); + if (result.response === 1) { + clipboard.writeText(aboutInformation); + } + }, + }; + } + + private localize(s: string, p?: string) { + return this._i18nService.t(s, p); + } + + private async checkForUpdate() { + this._updater.checkForUpdate(true); + } +} diff --git a/apps/desktop/src/main/menu/menu.account.ts b/apps/desktop/src/main/menu/menu.account.ts new file mode 100644 index 0000000000..cce734beac --- /dev/null +++ b/apps/desktop/src/main/menu/menu.account.ts @@ -0,0 +1,115 @@ +import { BrowserWindow, dialog, MenuItemConstructorOptions, shell } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { isMacAppStore, isWindowsStore } from "jslib-electron/utils"; + +import { IMenubarMenu } from "./menubar"; + +export class AccountMenu implements IMenubarMenu { + readonly id: string = "accountMenu"; + + get label(): string { + return this.localize("account"); + } + + get items(): MenuItemConstructorOptions[] { + return [ + this.premiumMembership, + this.changeMasterPassword, + this.twoStepLogin, + this.fingerprintPhrase, + ]; + } + + private readonly _i18nService: I18nService; + private readonly _messagingService: MessagingService; + private readonly _webVaultUrl: string; + private readonly _window: BrowserWindow; + private readonly _isLocked: boolean; + + constructor( + i18nService: I18nService, + messagingService: MessagingService, + webVaultUrl: string, + window: BrowserWindow, + isLocked: boolean + ) { + this._i18nService = i18nService; + this._messagingService = messagingService; + this._webVaultUrl = webVaultUrl; + this._window = window; + this._isLocked = isLocked; + } + + private get premiumMembership(): MenuItemConstructorOptions { + return { + label: this.localize("premiumMembership"), + click: () => this.sendMessage("openPremium"), + id: "premiumMembership", + visible: !isWindowsStore() && !isMacAppStore(), + enabled: !this._isLocked, + }; + } + + private get changeMasterPassword(): MenuItemConstructorOptions { + return { + label: this.localize("changeMasterPass"), + id: "changeMasterPass", + click: async () => { + const result = await dialog.showMessageBox(this._window, { + title: this.localize("changeMasterPass"), + message: this.localize("changeMasterPass"), + detail: this.localize("changeMasterPasswordConfirmation"), + buttons: [this.localize("yes"), this.localize("no")], + cancelId: 1, + defaultId: 0, + noLink: true, + }); + if (result.response === 0) { + shell.openExternal(this._webVaultUrl); + } + }, + enabled: !this._isLocked, + }; + } + + private get twoStepLogin(): MenuItemConstructorOptions { + return { + label: this.localize("twoStepLogin"), + id: "twoStepLogin", + click: async () => { + const result = await dialog.showMessageBox(this._window, { + title: this.localize("twoStepLogin"), + message: this.localize("twoStepLogin"), + detail: this.localize("twoStepLoginConfirmation"), + buttons: [this.localize("yes"), this.localize("no")], + cancelId: 1, + defaultId: 0, + noLink: true, + }); + if (result.response === 0) { + shell.openExternal(this._webVaultUrl); + } + }, + enabled: !this._isLocked, + }; + } + + private get fingerprintPhrase(): MenuItemConstructorOptions { + return { + label: this.localize("fingerprintPhrase"), + id: "fingerprintPhrase", + click: () => this.sendMessage("showFingerprintPhrase"), + enabled: !this._isLocked, + }; + } + + private localize(s: string) { + return this._i18nService.t(s); + } + + private sendMessage(message: string, args?: any) { + this._messagingService.send(message, args); + } +} diff --git a/apps/desktop/src/main/menu/menu.bitwarden.ts b/apps/desktop/src/main/menu/menu.bitwarden.ts new file mode 100644 index 0000000000..6ee3be9dbc --- /dev/null +++ b/apps/desktop/src/main/menu/menu.bitwarden.ts @@ -0,0 +1,113 @@ +import { BrowserWindow, MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { UpdaterMain } from "jslib-electron/updater.main"; +import { isMac } from "jslib-electron/utils"; + +import { FirstMenu } from "./menu.first"; +import { MenuAccount } from "./menu.updater"; +import { IMenubarMenu } from "./menubar"; + +// AKA: "FirstMenu" or "MacMenu" - the first menu that shows on all macOs apps +export class BitwardenMenu extends FirstMenu implements IMenubarMenu { + readonly id: string = "bitwarden"; + readonly label: string = "Bitwarden"; + + get items(): MenuItemConstructorOptions[] { + const items = [this.aboutBitwarden, this.checkForUpdates]; + if (this.aboutBitwarden.visible === true || this.checkForUpdates.visible === true) { + items.push(this.separator); + } + items.push(this.settings); + items.push(this.lock); + items.push(this.lockAll); + items.push(this.logOut); + items.push(this.separator); + items.push(this.services); + + if ( + this.hideBitwarden.visible === true || + this.hideOthers.visible === true || + this.showAll.visible === true + ) { + items.push(this.separator); + } + + items.push(this.hideBitwarden); + items.push(this.hideOthers); + items.push(this.showAll); + + if (this.quitBitwarden.visible === true) { + items.push(this.separator); + } + items.push(this.quitBitwarden); + return items; + } + + constructor( + i18nService: I18nService, + messagingService: MessagingService, + updater: UpdaterMain, + window: BrowserWindow, + accounts: { [userId: string]: MenuAccount }, + isLocked: boolean + ) { + super(i18nService, messagingService, updater, window, accounts, isLocked); + } + + private get aboutBitwarden(): MenuItemConstructorOptions { + return { + id: "aboutBitwarden", + label: this.localize("aboutBitwarden"), + role: "about", + visible: isMac(), + }; + } + + private get services(): MenuItemConstructorOptions { + return { + id: "services", + label: this.localize("services"), + role: "services", + submenu: [], + visible: isMac(), + }; + } + + private get hideBitwarden(): MenuItemConstructorOptions { + return { + id: "hideBitwarden", + label: this.localize("hideBitwarden"), + role: "hide", + visible: isMac(), + }; + } + + private get hideOthers(): MenuItemConstructorOptions { + return { + id: "hideOthers", + label: this.localize("hideOthers"), + role: "hideOthers", + visible: isMac(), + }; + } + + private get showAll(): MenuItemConstructorOptions { + return { + id: "showAll", + label: this.localize("showAll"), + role: "unhide", + visible: isMac(), + }; + } + + private get quitBitwarden(): MenuItemConstructorOptions { + return { + id: "quitBitwarden", + label: this.localize("quitBitwarden"), + role: "quit", + visible: isMac(), + }; + } +} diff --git a/apps/desktop/src/main/menu/menu.edit.ts b/apps/desktop/src/main/menu/menu.edit.ts new file mode 100644 index 0000000000..a48afc745b --- /dev/null +++ b/apps/desktop/src/main/menu/menu.edit.ts @@ -0,0 +1,131 @@ +import { MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +import { IMenubarMenu } from "./menubar"; + +export class EditMenu implements IMenubarMenu { + readonly id: string = "editMenu"; + + get label(): string { + return this.localize("edit"); + } + + get items(): MenuItemConstructorOptions[] { + return [ + this.undo, + this.redo, + this.separator, + this.cut, + this.copy, + this.paste, + this.separator, + this.selectAll, + this.separator, + this.copyUsername, + this.copyPassword, + this.copyVerificationCodeTotp, + ]; + } + + private readonly _i18nService: I18nService; + private readonly _messagingService: MessagingService; + private readonly _isLocked: boolean; + + constructor(i18nService: I18nService, messagingService: MessagingService, isLocked: boolean) { + this._i18nService = i18nService; + this._messagingService = messagingService; + this._isLocked = isLocked; + } + + private get undo(): MenuItemConstructorOptions { + return { + id: "undo", + label: this.localize("undo"), + role: "undo", + }; + } + + private get redo(): MenuItemConstructorOptions { + return { + id: "redo", + label: this.localize("redo"), + role: "redo", + }; + } + + private get separator(): MenuItemConstructorOptions { + return { type: "separator" }; + } + + private get cut(): MenuItemConstructorOptions { + return { + id: "cut", + label: this.localize("cut"), + role: "cut", + }; + } + + private get copy(): MenuItemConstructorOptions { + return { + id: "copy", + label: this.localize("copy"), + role: "copy", + }; + } + + private get paste(): MenuItemConstructorOptions { + return { + id: "paste", + label: this.localize("paste"), + role: "paste", + }; + } + + private get selectAll(): MenuItemConstructorOptions { + return { + id: "selectAll", + label: this.localize("selectAll"), + role: "selectAll", + }; + } + + private get copyUsername(): MenuItemConstructorOptions { + return { + label: this.localize("copyUsername"), + id: "copyUsername", + click: () => this.sendMessage("copyUsername"), + accelerator: "CmdOrCtrl+U", + enabled: !this._isLocked, + }; + } + + private get copyPassword(): MenuItemConstructorOptions { + return { + label: this.localize("copyPassword"), + id: "copyPassword", + click: () => this.sendMessage("copyPassword"), + accelerator: "CmdOrCtrl+P", + enabled: !this._isLocked, + }; + } + + private get copyVerificationCodeTotp(): MenuItemConstructorOptions { + return { + label: this.localize("copyVerificationCodeTotp"), + id: "copyTotp", + click: () => this.sendMessage("copyTotp"), + accelerator: "CmdOrCtrl+T", + enabled: !this._isLocked, + }; + } + + private localize(s: string) { + return this._i18nService.t(s); + } + + private sendMessage(message: string) { + this._messagingService.send(message); + } +} diff --git a/apps/desktop/src/main/menu/menu.file.ts b/apps/desktop/src/main/menu/menu.file.ts new file mode 100644 index 0000000000..9ef4bc6da3 --- /dev/null +++ b/apps/desktop/src/main/menu/menu.file.ts @@ -0,0 +1,141 @@ +import { BrowserWindow, MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { UpdaterMain } from "jslib-electron/updater.main"; +import { isMac, isMacAppStore } from "jslib-electron/utils"; + +import { FirstMenu } from "./menu.first"; +import { MenuAccount } from "./menu.updater"; +import { IMenubarMenu } from "./menubar"; + +export class FileMenu extends FirstMenu implements IMenubarMenu { + readonly id: string = "fileMenu"; + + get label(): string { + return this.localize("file"); + } + + get items(): MenuItemConstructorOptions[] { + let items = [ + this.addNewLogin, + this.addNewItem, + this.addNewFolder, + this.separator, + this.syncVault, + this.exportVault, + ]; + + if (!isMac()) { + items = [ + ...items, + ...[ + this.separator, + this.settings, + this.lock, + this.lockAll, + this.logOut, + this.separator, + this.quitBitwarden, + ], + ]; + } + + return items; + } + + constructor( + i18nService: I18nService, + messagingService: MessagingService, + updater: UpdaterMain, + window: BrowserWindow, + accounts: { [userId: string]: MenuAccount }, + isLocked: boolean + ) { + super(i18nService, messagingService, updater, window, accounts, isLocked); + } + + private get addNewLogin(): MenuItemConstructorOptions { + return { + label: this.localize("addNewLogin"), + click: () => this.sendMessage("newLogin"), + accelerator: "CmdOrCtrl+N", + id: "addNewLogin", + enabled: !this._isLocked, + }; + } + + private get addNewItem(): MenuItemConstructorOptions { + return { + label: this.localize("addNewItem"), + id: "addNewItem", + submenu: this.addNewItemSubmenu, + enabled: !this._isLocked, + }; + } + + private get addNewItemSubmenu(): MenuItemConstructorOptions[] { + return [ + { + id: "typeLogin", + label: this.localize("typeLogin"), + click: () => this.sendMessage("newLogin"), + accelerator: "CmdOrCtrl+Shift+L", + }, + { + id: "typeCard", + label: this.localize("typeCard"), + click: () => this.sendMessage("newCard"), + accelerator: "CmdOrCtrl+Shift+C", + }, + { + id: "typeIdentity", + label: this.localize("typeIdentity"), + click: () => this.sendMessage("newIdentity"), + accelerator: "CmdOrCtrl+Shift+I", + }, + { + id: "typeSecureNote", + label: this.localize("typeSecureNote"), + click: () => this.sendMessage("newSecureNote"), + accelerator: "CmdOrCtrl+Shift+S", + }, + ]; + } + + private get addNewFolder(): MenuItemConstructorOptions { + return { + id: "addNewFolder", + label: this.localize("addNewFolder"), + click: () => this.sendMessage("newFolder"), + enabled: !this._isLocked, + }; + } + + private get syncVault(): MenuItemConstructorOptions { + return { + id: "syncVault", + label: this.localize("syncVault"), + click: () => this.sendMessage("syncVault"), + enabled: !this._isLocked, + }; + } + + private get exportVault(): MenuItemConstructorOptions { + return { + id: "exportVault", + label: this.localize("exportVault"), + click: () => this.sendMessage("exportVault"), + enabled: !this._isLocked, + }; + } + + private get quitBitwarden(): MenuItemConstructorOptions { + return { + id: "quitBitwarden", + label: this.localize("quitBitwarden"), + visible: !isMacAppStore(), + role: "quit", + }; + } +} diff --git a/apps/desktop/src/main/menu/menu.first.ts b/apps/desktop/src/main/menu/menu.first.ts new file mode 100644 index 0000000000..bccce323bf --- /dev/null +++ b/apps/desktop/src/main/menu/menu.first.ts @@ -0,0 +1,152 @@ +import { BrowserWindow, dialog, MenuItem, MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { UpdaterMain } from "jslib-electron/updater.main"; +import { isMacAppStore, isSnapStore, isWindowsStore } from "jslib-electron/utils"; + +import { MenuAccount } from "./menu.updater"; + +export class FirstMenu { + protected readonly _i18nService: I18nService; + protected readonly _updater: UpdaterMain; + protected readonly _messagingService: MessagingService; + protected readonly _accounts: { [userId: string]: MenuAccount }; + protected readonly _window: BrowserWindow; + protected readonly _isLocked: boolean; + + constructor( + i18nService: I18nService, + messagingService: MessagingService, + updater: UpdaterMain, + window: BrowserWindow, + accounts: { [userId: string]: MenuAccount }, + isLocked: boolean + ) { + this._i18nService = i18nService; + this._updater = updater; + this._messagingService = messagingService; + this._window = window; + this._accounts = accounts; + this._isLocked = isLocked; + } + + protected get hasAccounts(): boolean { + return this._accounts != null && Object.keys(this._accounts).length > 0; + } + + protected get checkForUpdates(): MenuItemConstructorOptions { + return { + id: "checkForUpdates", + label: this.localize("checkForUpdates"), + click: (menuItem) => this.checkForUpdate(menuItem), + visible: !isMacAppStore() && !isWindowsStore() && !isSnapStore(), + }; + } + + protected get separator(): MenuItemConstructorOptions { + return { + type: "separator", + }; + } + + protected get settings(): MenuItemConstructorOptions { + return { + id: "settings", + label: this.localize(process.platform === "darwin" ? "preferences" : "settings"), + click: () => this.sendMessage("openSettings"), + accelerator: "CmdOrCtrl+,", + enabled: !this._isLocked, + }; + } + + protected get lock(): MenuItemConstructorOptions { + return { + id: "lock", + label: this.localize("lockVault"), + submenu: this.lockSubmenu, + enabled: this.hasAccounts, + }; + } + + protected get lockSubmenu(): MenuItemConstructorOptions[] { + const value: MenuItemConstructorOptions[] = []; + for (const userId in this._accounts) { + if (userId == null) { + continue; + } + + value.push({ + label: this._accounts[userId].email, + id: `lockNow_${this._accounts[userId].userId}`, + click: () => this.sendMessage("lockVault", { userId: this._accounts[userId].userId }), + enabled: !this._accounts[userId].isLocked, + visible: this._accounts[userId].isAuthenticated, + }); + } + return value; + } + + protected get lockAll(): MenuItemConstructorOptions { + return { + id: "lockAllNow", + label: this.localize("lockAllVaults"), + click: () => this.sendMessage("lockAllVaults"), + accelerator: "CmdOrCtrl+L", + enabled: this.hasAccounts, + }; + } + + protected get logOut(): MenuItemConstructorOptions { + return { + id: "logOut", + label: this.localize("logOut"), + submenu: this.logOutSubmenu, + enabled: this.hasAccounts, + }; + } + + protected get logOutSubmenu(): MenuItemConstructorOptions[] { + const value: MenuItemConstructorOptions[] = []; + for (const userId in this._accounts) { + if (userId == null) { + continue; + } + + value.push({ + label: this._accounts[userId].email, + id: `logOut_${this._accounts[userId].userId}`, + click: async () => { + const result = await dialog.showMessageBox(this._window, { + title: this.localize("logOut"), + message: this.localize("logOut"), + detail: this.localize("logOutConfirmation"), + buttons: [this.localize("logOut"), this.localize("cancel")], + cancelId: 1, + defaultId: 0, + noLink: true, + }); + if (result.response === 0) { + this.sendMessage("logout", { userId: this._accounts[userId].userId }); + } + }, + visible: this._accounts[userId].isAuthenticated, + }); + } + return value; + } + + protected localize(s: string) { + return this._i18nService.t(s); + } + + protected async checkForUpdate(menuItem: MenuItem) { + menuItem.enabled = false; + this._updater.checkForUpdate(true); + menuItem.enabled = true; + } + + protected sendMessage(message: string, args?: any) { + this._messagingService.send(message, args); + } +} diff --git a/apps/desktop/src/main/menu/menu.help.ts b/apps/desktop/src/main/menu/menu.help.ts new file mode 100644 index 0000000000..d425da8f21 --- /dev/null +++ b/apps/desktop/src/main/menu/menu.help.ts @@ -0,0 +1,234 @@ +import { shell, MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { isMacAppStore, isWindowsStore } from "jslib-electron/utils"; + +import { AboutMenu } from "./menu.about"; +import { IMenubarMenu } from "./menubar"; + +export class HelpMenu implements IMenubarMenu { + readonly id: string = "help"; + + get label(): string { + return this.localize("help"); + } + + get items(): MenuItemConstructorOptions[] { + const items = [ + this.getHelp, + this.contactUs, + this.fileBugReport, + this.legal, + this.separator, + this.followUs, + this.separator, + this.goToWebVault, + this.separator, + this.getMobileApp, + this.getBrowserExtension, + ]; + + if (this._aboutMenu != null) { + items.push(...this._aboutMenu.items); + } + return items; + } + + private readonly _i18nService: I18nService; + private readonly _webVaultUrl: string; + private readonly _aboutMenu: AboutMenu; + + constructor(i18nService: I18nService, webVaultUrl: string, aboutMenu: AboutMenu) { + this._i18nService = i18nService; + this._webVaultUrl = webVaultUrl; + this._aboutMenu = aboutMenu; + } + + private get contactUs(): MenuItemConstructorOptions { + return { + id: "contactUs", + label: this.localize("contactUs"), + click: () => shell.openExternal("https://bitwarden.com/contact"), + }; + } + + private get getHelp(): MenuItemConstructorOptions { + return { + id: "getHelp", + label: this.localize("getHelp"), + click: () => shell.openExternal("https://bitwarden.com/help"), + }; + } + + private get fileBugReport(): MenuItemConstructorOptions { + return { + id: "fileBugReport", + label: this.localize("fileBugReport"), + click: () => shell.openExternal("https://github.com/bitwarden/desktop/issues"), + }; + } + + private get legal(): MenuItemConstructorOptions { + return { + id: "legal", + label: this.localize("legal"), + visible: isMacAppStore(), + submenu: this.legalSubmenu, + }; + } + + private get legalSubmenu(): MenuItemConstructorOptions[] { + return [ + { + id: "termsOfService", + label: this.localize("termsOfService"), + click: () => shell.openExternal("https://bitwarden.com/terms/"), + }, + { + id: "privacyPolicy", + label: this.localize("privacyPolicy"), + click: () => shell.openExternal("https://bitwarden.com/privacy/"), + }, + ]; + } + + private get separator(): MenuItemConstructorOptions { + return { type: "separator" }; + } + + private get followUs(): MenuItemConstructorOptions { + return { + id: "followUs", + label: this.localize("followUs"), + submenu: this.followUsSubmenu, + }; + } + + private get followUsSubmenu(): MenuItemConstructorOptions[] { + return [ + { + id: "blog", + label: this.localize("blog"), + click: () => shell.openExternal("https://blog.bitwarden.com"), + }, + { + id: "twitter", + label: "Twitter", + click: () => shell.openExternal("https://twitter.com/bitwarden"), + }, + { + id: "facebook", + label: "Facebook", + click: () => shell.openExternal("https://www.facebook.com/bitwarden/"), + }, + { + id: "github", + label: "GitHub", + click: () => shell.openExternal("https://github.com/bitwarden"), + }, + ]; + } + + private get goToWebVault(): MenuItemConstructorOptions { + return { + id: "goToWebVault", + label: this.localize("goToWebVault"), + click: () => shell.openExternal(this._webVaultUrl), + }; + } + + private get getMobileApp(): MenuItemConstructorOptions { + return { + id: "getMobileApp", + label: this.localize("getMobileApp"), + visible: !isWindowsStore(), + submenu: this.getMobileAppSubmenu, + }; + } + + private get getMobileAppSubmenu(): MenuItemConstructorOptions[] { + return [ + { + id: "iOS", + label: "iOS", + click: () => { + shell.openExternal( + "https://itunes.apple.com/app/" + "bitwarden-free-password-manager/id1137397744?mt=8" + ); + }, + }, + { + id: "android", + label: "Android", + click: () => { + shell.openExternal( + "https://play.google.com/store/apps/" + "details?id=com.x8bit.bitwarden" + ); + }, + }, + ]; + } + + private get getBrowserExtension(): MenuItemConstructorOptions { + return { + id: "getBrowserExtension", + label: this.localize("getBrowserExtension"), + visible: !isWindowsStore(), + submenu: this.getBrowserExtensionSubmenu, + }; + } + + private get getBrowserExtensionSubmenu(): MenuItemConstructorOptions[] { + return [ + { + id: "chrome", + label: "Chrome", + click: () => { + shell.openExternal( + "https://chrome.google.com/webstore/detail/" + + "bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb" + ); + }, + }, + { + id: "firefox", + label: "Firefox", + click: () => { + shell.openExternal( + "https://addons.mozilla.org/firefox/addon/" + "bitwarden-password-manager/" + ); + }, + }, + { + id: "firefox", + label: "Opera", + click: () => { + shell.openExternal( + "https://addons.opera.com/extensions/details/" + "bitwarden-free-password-manager/" + ); + }, + }, + { + id: "firefox", + label: "Edge", + click: () => { + shell.openExternal( + "https://microsoftedge.microsoft.com/addons/" + + "detail/jbkfoedolllekgbhcbcoahefnbanhhlh" + ); + }, + }, + { + id: "safari", + label: "Safari", + click: () => { + shell.openExternal("https://bitwarden.com/download/"); + }, + }, + ]; + } + + private localize(s: string) { + return this._i18nService.t(s); + } +} diff --git a/apps/desktop/src/main/menu/menu.main.ts b/apps/desktop/src/main/menu/menu.main.ts new file mode 100644 index 0000000000..2cc1935411 --- /dev/null +++ b/apps/desktop/src/main/menu/menu.main.ts @@ -0,0 +1,52 @@ +import { app, Menu } from "electron"; + +import { BaseMenu } from "jslib-electron/baseMenu"; + +import { Main } from "../../main"; + +import { MenuUpdateRequest } from "./menu.updater"; +import { Menubar } from "./menubar"; + +const cloudWebVaultUrl = "https://vault.bitwarden.com"; + +export class MenuMain extends BaseMenu { + constructor(private main: Main) { + super(main.i18nService, main.windowMain); + } + + async init() { + this.initContextMenu(); + await this.setMenu(); + } + + async updateApplicationMenuState(updateRequest: MenuUpdateRequest) { + await this.setMenu(updateRequest); + } + + private async setMenu(updateRequest?: MenuUpdateRequest) { + Menu.setApplicationMenu( + new Menubar( + this.main.i18nService, + this.main.messagingService, + this.main.updaterMain, + this.windowMain, + await this.getWebVaultUrl(), + app.getVersion(), + updateRequest + ).menu + ); + } + + private async getWebVaultUrl() { + let webVaultUrl = cloudWebVaultUrl; + const urlsObj: any = await this.main.stateService.getEnvironmentUrls(); + if (urlsObj != null) { + if (urlsObj.base != null) { + webVaultUrl = urlsObj.base; + } else if (urlsObj.webVault != null) { + webVaultUrl = urlsObj.webVault; + } + } + return webVaultUrl; + } +} diff --git a/apps/desktop/src/main/menu/menu.updater.ts b/apps/desktop/src/main/menu/menu.updater.ts new file mode 100644 index 0000000000..75454a56f8 --- /dev/null +++ b/apps/desktop/src/main/menu/menu.updater.ts @@ -0,0 +1,12 @@ +export class MenuUpdateRequest { + hideChangeMasterPassword: boolean; + activeUserId: string; + accounts: { [userId: string]: MenuAccount }; +} + +export class MenuAccount { + isAuthenticated: boolean; + isLocked: boolean; + userId: string; + email: string; +} diff --git a/apps/desktop/src/main/menu/menu.view.ts b/apps/desktop/src/main/menu/menu.view.ts new file mode 100644 index 0000000000..e3f53e35ba --- /dev/null +++ b/apps/desktop/src/main/menu/menu.view.ts @@ -0,0 +1,135 @@ +import { MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; + +import { IMenubarMenu } from "./menubar"; + +export class ViewMenu implements IMenubarMenu { + readonly id: "viewMenu"; + + get label(): string { + return this.localize("view"); + } + + get items(): MenuItemConstructorOptions[] { + return [ + this.searchVault, + this.separator, + this.generator, + this.passwordHistory, + this.separator, + this.zoomIn, + this.zoomOut, + this.resetZoom, + this.separator, + this.toggleFullscreen, + this.separator, + this.reload, + this.toggleDevTools, + ]; + } + + private readonly _i18nService: I18nService; + private readonly _messagingService: MessagingService; + private readonly _isLocked: boolean; + + constructor(i18nService: I18nService, messagingService: MessagingService, isLocked: boolean) { + this._i18nService = i18nService; + this._messagingService = messagingService; + this._isLocked = isLocked; + } + + private get searchVault(): MenuItemConstructorOptions { + return { + id: "searchVault", + label: this.localize("searchVault"), + click: () => this.sendMessage("focusSearch"), + accelerator: "CmdOrCtrl+F", + enabled: !this._isLocked, + }; + } + + private get separator(): MenuItemConstructorOptions { + return { type: "separator" }; + } + + private get generator(): MenuItemConstructorOptions { + return { + id: "generator", + label: this.localize("generator"), + click: () => this.sendMessage("openGenerator"), + accelerator: "CmdOrCtrl+G", + enabled: !this._isLocked, + }; + } + + private get passwordHistory(): MenuItemConstructorOptions { + return { + id: "passwordHistory", + label: this.localize("passwordHistory"), + click: () => this.sendMessage("openPasswordHistory"), + enabled: !this._isLocked, + }; + } + + private get zoomIn(): MenuItemConstructorOptions { + return { + id: "zoomIn", + label: this.localize("zoomIn"), + role: "zoomIn", + accelerator: "CmdOrCtrl+=", + }; + } + + private get zoomOut(): MenuItemConstructorOptions { + return { + id: "zoomOut", + label: this.localize("zoomOut"), + role: "zoomOut", + accelerator: "CmdOrCtrl+-", + }; + } + + private get resetZoom(): MenuItemConstructorOptions { + return { + id: "resetZoom", + label: this.localize("resetZoom"), + role: "resetZoom", + accelerator: "CmdOrCtrl+0", + }; + } + + private get toggleFullscreen(): MenuItemConstructorOptions { + return { + id: "toggleFullScreen", + label: this.localize("toggleFullScreen"), + role: "togglefullscreen", + }; + } + + private get reload(): MenuItemConstructorOptions { + return { + id: "reload", + label: this.localize("reload"), + role: "forceReload", + }; + } + + private get toggleDevTools(): MenuItemConstructorOptions { + return { + id: "toggleDevTools", + label: this.localize("toggleDevTools"), + role: "toggleDevTools", + accelerator: "F12", + }; + } + + private localize(s: string) { + return this._i18nService.t(s); + } + + private sendMessage(message: string) { + this._messagingService.send(message); + } +} diff --git a/apps/desktop/src/main/menu/menu.window.ts b/apps/desktop/src/main/menu/menu.window.ts new file mode 100644 index 0000000000..9b63fa5d45 --- /dev/null +++ b/apps/desktop/src/main/menu/menu.window.ts @@ -0,0 +1,105 @@ +import { MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { isMac } from "jslib-electron/utils"; +import { WindowMain } from "jslib-electron/window.main"; + +import { IMenubarMenu } from "./menubar"; + +export class WindowMenu implements IMenubarMenu { + readonly id: string; + + get label(): string { + return this.localize("window"); + } + + get items(): MenuItemConstructorOptions[] { + const items = [this.minimize, this.hideToMenu, this.alwaysOnTop]; + + if (isMac()) { + items.push(this.zoom, this.separator, this.bringAllToFront); + } + + items.push(this.separator, this.close); + return items; + } + + private readonly _i18nService: I18nService; + private readonly _messagingService: MessagingService; + private readonly _window: WindowMain; + + constructor( + i18nService: I18nService, + messagingService: MessagingService, + windowMain: WindowMain + ) { + this._i18nService = i18nService; + this._messagingService = messagingService; + this._window = windowMain; + } + + private get minimize(): MenuItemConstructorOptions { + return { + id: "minimize", + label: this.localize("minimize"), + role: "minimize", + }; + } + + private get hideToMenu(): MenuItemConstructorOptions { + return { + id: "hideToMenu", + label: this.localize(isMac() ? "hideToMenuBar" : "hideToTray"), + click: () => this.sendMessage("hideToTray"), + accelerator: "CmdOrCtrl+Shift+M", + }; + } + + private get alwaysOnTop(): MenuItemConstructorOptions { + return { + id: "alwaysOnTop", + label: this.localize("alwaysOnTop"), + type: "checkbox", + checked: this._window.win.isAlwaysOnTop(), + click: () => this._window.toggleAlwaysOnTop(), + accelerator: "CmdOrCtrl+Shift+T", + }; + } + + private get zoom(): MenuItemConstructorOptions { + return { + id: "zoom", + label: this.localize("zoom"), + role: "zoom", + }; + } + + private get separator(): MenuItemConstructorOptions { + return { type: "separator" }; + } + + private get bringAllToFront(): MenuItemConstructorOptions { + return { + id: "bringAllToFront", + label: this.localize("bringAllToFront"), + role: "front", + }; + } + + private get close(): MenuItemConstructorOptions { + return { + id: "close", + label: this.localize("close"), + role: "close", + }; + } + + private localize(s: string) { + return this._i18nService.t(s); + } + + private sendMessage(message: string, args?: any) { + this._messagingService.send(message, args); + } +} diff --git a/apps/desktop/src/main/menu/menubar.ts b/apps/desktop/src/main/menu/menubar.ts new file mode 100644 index 0000000000..c9aa070687 --- /dev/null +++ b/apps/desktop/src/main/menu/menubar.ts @@ -0,0 +1,100 @@ +import { Menu, MenuItemConstructorOptions } from "electron"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { UpdaterMain } from "jslib-electron/updater.main"; +import { isMac } from "jslib-electron/utils"; +import { WindowMain } from "jslib-electron/window.main"; + +import { AboutMenu } from "./menu.about"; +import { AccountMenu } from "./menu.account"; +import { BitwardenMenu } from "./menu.bitwarden"; +import { EditMenu } from "./menu.edit"; +import { FileMenu } from "./menu.file"; +import { HelpMenu } from "./menu.help"; +import { MenuUpdateRequest } from "./menu.updater"; +import { ViewMenu } from "./menu.view"; +import { WindowMenu } from "./menu.window"; + +export interface IMenubarMenu { + id: string; + label: string; + visible?: boolean; // Assumes true if null + items: MenuItemConstructorOptions[]; +} + +export class Menubar { + private readonly items: IMenubarMenu[]; + + get menu(): Menu { + const template: MenuItemConstructorOptions[] = []; + if (this.items != null) { + this.items.forEach((item: IMenubarMenu) => { + if (item != null) { + template.push({ + id: item.id, + label: item.label, + submenu: item.items, + visible: item.visible ?? true, + }); + } + }); + } + return Menu.buildFromTemplate(template); + } + + constructor( + i18nService: I18nService, + messagingService: MessagingService, + updaterMain: UpdaterMain, + windowMain: WindowMain, + webVaultUrl: string, + appVersion: string, + updateRequest?: MenuUpdateRequest + ) { + let isLocked = true; + if ( + updateRequest != null && + updateRequest.accounts != null && + updateRequest.activeUserId != null + ) { + isLocked = updateRequest.accounts[updateRequest.activeUserId]?.isLocked ?? true; + } + + this.items = [ + new FileMenu( + i18nService, + messagingService, + updaterMain, + windowMain.win, + updateRequest?.accounts, + isLocked + ), + new EditMenu(i18nService, messagingService, isLocked), + new ViewMenu(i18nService, messagingService, isLocked), + new AccountMenu(i18nService, messagingService, webVaultUrl, windowMain.win, isLocked), + new WindowMenu(i18nService, messagingService, windowMain), + new HelpMenu( + i18nService, + webVaultUrl, + new AboutMenu(i18nService, appVersion, windowMain.win, updaterMain) + ), + ]; + + if (isMac()) { + this.items = [ + ...[ + new BitwardenMenu( + i18nService, + messagingService, + updaterMain, + windowMain.win, + updateRequest?.accounts, + isLocked + ), + ], + ...this.items, + ]; + } + } +} diff --git a/apps/desktop/src/main/messaging.main.ts b/apps/desktop/src/main/messaging.main.ts new file mode 100644 index 0000000000..290109eec0 --- /dev/null +++ b/apps/desktop/src/main/messaging.main.ts @@ -0,0 +1,159 @@ +import * as fs from "fs"; +import * as path from "path"; + +import { app, ipcMain } from "electron"; + +import { StateService } from "jslib-common/abstractions/state.service"; + +import { Main } from "../main"; + +import { MenuUpdateRequest } from "./menu/menu.updater"; + +const SyncInterval = 5 * 60 * 1000; // 5 minutes + +export class MessagingMain { + private syncTimeout: NodeJS.Timer; + + constructor(private main: Main, private stateService: StateService) {} + + init() { + this.scheduleNextSync(); + if (process.platform === "linux") { + this.stateService.setOpenAtLogin(fs.existsSync(this.linuxStartupFile())); + } else { + const loginSettings = app.getLoginItemSettings(); + this.stateService.setOpenAtLogin(loginSettings.openAtLogin); + } + ipcMain.on("messagingService", async (event: any, message: any) => this.onMessage(message)); + } + + onMessage(message: any) { + switch (message.command) { + case "scheduleNextSync": + this.scheduleNextSync(); + break; + case "updateAppMenu": + this.main.menuMain.updateApplicationMenuState(message.updateRequest); + this.updateTrayMenu(message.updateRequest); + break; + case "minimizeOnCopy": + this.stateService.getMinimizeOnCopyToClipboard().then((shouldMinimize) => { + if (shouldMinimize && this.main.windowMain.win !== null) { + this.main.windowMain.win.minimize(); + } + }); + break; + case "showTray": + this.main.trayMain.showTray(); + break; + case "removeTray": + this.main.trayMain.removeTray(); + break; + case "hideToTray": + this.main.trayMain.hideToTray(); + break; + case "addOpenAtLogin": + this.addOpenAtLogin(); + break; + case "removeOpenAtLogin": + this.removeOpenAtLogin(); + break; + case "setFocus": + this.setFocus(); + break; + case "getWindowIsFocused": + this.windowIsFocused(); + break; + case "enableBrowserIntegration": + this.main.nativeMessagingMain.generateManifests(); + this.main.nativeMessagingMain.listen(); + break; + case "disableBrowserIntegration": + this.main.nativeMessagingMain.removeManifests(); + this.main.nativeMessagingMain.stop(); + break; + default: + break; + } + } + + private scheduleNextSync() { + if (this.syncTimeout) { + global.clearTimeout(this.syncTimeout); + } + + this.syncTimeout = global.setTimeout(() => { + if (this.main.windowMain.win == null) { + return; + } + + this.main.windowMain.win.webContents.send("messagingService", { + command: "checkSyncVault", + }); + }, SyncInterval); + } + + private updateTrayMenu(updateRequest: MenuUpdateRequest) { + if ( + this.main.trayMain == null || + this.main.trayMain.contextMenu == null || + updateRequest?.activeUserId == null + ) { + return; + } + const lockVaultTrayMenuItem = this.main.trayMain.contextMenu.getMenuItemById("lockVault"); + const activeAccount = updateRequest.accounts[updateRequest.activeUserId]; + if (lockVaultTrayMenuItem != null && activeAccount != null) { + lockVaultTrayMenuItem.enabled = activeAccount.isAuthenticated && !activeAccount.isLocked; + } + this.main.trayMain.updateContextMenu(); + } + + private addOpenAtLogin() { + if (process.platform === "linux") { + const data = `[Desktop Entry] +Type=Application +Version=${app.getVersion()} +Name=Bitwarden +Comment=Bitwarden startup script +Exec=${app.getPath("exe")} +StartupNotify=false +Terminal=false`; + + const dir = path.dirname(this.linuxStartupFile()); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); + } + fs.writeFileSync(this.linuxStartupFile(), data); + } else { + app.setLoginItemSettings({ openAtLogin: true }); + } + } + + private removeOpenAtLogin() { + if (process.platform === "linux") { + if (fs.existsSync(this.linuxStartupFile())) { + fs.unlinkSync(this.linuxStartupFile()); + } + } else { + app.setLoginItemSettings({ openAtLogin: false }); + } + } + + private linuxStartupFile(): string { + return path.join(app.getPath("home"), ".config", "autostart", "bitwarden.desktop"); + } + + private setFocus() { + this.main.trayMain.restoreFromTray(); + this.main.windowMain.win.focusOnWebView(); + } + + private windowIsFocused() { + const windowIsFocused = this.main.windowMain.win.isFocused(); + this.main.windowMain.win.webContents.send("messagingService", { + command: "windowIsFocused", + windowIsFocused: windowIsFocused, + }); + } +} diff --git a/apps/desktop/src/main/nativeMessaging.main.ts b/apps/desktop/src/main/nativeMessaging.main.ts new file mode 100644 index 0000000000..0e8554a1b3 --- /dev/null +++ b/apps/desktop/src/main/nativeMessaging.main.ts @@ -0,0 +1,319 @@ +import { existsSync, promises as fs } from "fs"; +import { Socket } from "net"; +import { homedir, userInfo } from "os"; +import * as path from "path"; +import * as util from "util"; + +import { ipcMain } from "electron"; +import * as ipc from "node-ipc"; + +import { LogService } from "jslib-common/abstractions/log.service"; +import { WindowMain } from "jslib-electron/window.main"; + +export class NativeMessagingMain { + private connected: Socket[] = []; + private socket: any; + + constructor( + private logService: LogService, + private windowMain: WindowMain, + private userPath: string, + private exePath: string + ) {} + + async listen() { + ipc.config.id = "bitwarden"; + ipc.config.retry = 1500; + if (process.platform === "darwin") { + if (!existsSync(`${homedir()}/tmp`)) { + await fs.mkdir(`${homedir()}/tmp`); + } + ipc.config.socketRoot = `${homedir()}/tmp/`; + } + + ipc.serve(() => { + ipc.server.on("message", (data: any, socket: any) => { + this.socket = socket; + this.windowMain.win.webContents.send("nativeMessaging", data); + }); + + ipcMain.on("nativeMessagingReply", (event, msg) => { + if (this.socket != null && msg != null) { + this.send(msg, this.socket); + } + }); + + ipc.server.on("connect", (socket: Socket) => { + this.connected.push(socket); + }); + + ipc.server.on("socket.disconnected", (socket, destroyedSocketID) => { + const index = this.connected.indexOf(socket); + if (index > -1) { + this.connected.splice(index, 1); + } + + this.socket = null; + ipc.log("client " + destroyedSocketID + " has disconnected!"); + }); + }); + + ipc.server.start(); + } + + stop() { + ipc.server.stop(); + // Kill all existing connections + this.connected.forEach((socket) => { + if (!socket.destroyed) { + socket.destroy(); + } + }); + } + + send(message: object, socket: any) { + ipc.server.emit(socket, "message", message); + } + + generateManifests() { + const baseJson = { + name: "com.8bit.bitwarden", + description: "Bitwarden desktop <-> browser bridge", + path: this.binaryPath(), + type: "stdio", + }; + + const firefoxJson = { + ...baseJson, + ...{ allowed_extensions: ["{446900e4-71c2-419f-a6a7-df9c091e268b}"] }, + }; + const chromeJson = { + ...baseJson, + ...{ + allowed_origins: [ + "chrome-extension://nngceckbapebfimnlniiiahkandclblb/", + "chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh/", + "chrome-extension://ccnckbpmaceehanjmeomladnmlffdjgn/", + ], + }, + }; + + switch (process.platform) { + case "win32": { + const destination = path.join(this.userPath, "browsers"); + this.writeManifest(path.join(destination, "firefox.json"), firefoxJson); + this.writeManifest(path.join(destination, "chrome.json"), chromeJson); + + this.createWindowsRegistry( + "HKLM\\SOFTWARE\\Mozilla\\Firefox", + "HKCU\\SOFTWARE\\Mozilla\\NativeMessagingHosts\\com.8bit.bitwarden", + path.join(destination, "firefox.json") + ); + this.createWindowsRegistry( + "HKCU\\SOFTWARE\\Google\\Chrome", + "HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\com.8bit.bitwarden", + path.join(destination, "chrome.json") + ); + break; + } + case "darwin": { + const nmhs = this.getDarwinNMHS(); + for (const [key, value] of Object.entries(nmhs)) { + if (existsSync(value)) { + const p = path.join(value, "NativeMessagingHosts", "com.8bit.bitwarden.json"); + + let manifest: any = chromeJson; + if (key === "Firefox") { + manifest = firefoxJson; + } + + this.writeManifest(p, manifest).catch((e) => + this.logService.error(`Error writing manifest for ${key}. ${e}`) + ); + } else { + this.logService.warning(`${key} not found skipping.`); + } + } + break; + } + case "linux": + if (existsSync(`${this.homedir()}/.mozilla/`)) { + this.writeManifest( + `${this.homedir()}/.mozilla/native-messaging-hosts/com.8bit.bitwarden.json`, + firefoxJson + ); + } + + if (existsSync(`${this.homedir()}/.config/google-chrome/`)) { + this.writeManifest( + `${this.homedir()}/.config/google-chrome/NativeMessagingHosts/com.8bit.bitwarden.json`, + chromeJson + ); + } + + if (existsSync(`${this.homedir()}/.config/microsoft-edge/`)) { + this.writeManifest( + `${this.homedir()}/.config/microsoft-edge/NativeMessagingHosts/com.8bit.bitwarden.json`, + chromeJson + ); + } + break; + default: + break; + } + } + + removeManifests() { + switch (process.platform) { + case "win32": + fs.unlink(path.join(this.userPath, "browsers", "firefox.json")); + fs.unlink(path.join(this.userPath, "browsers", "chrome.json")); + this.deleteWindowsRegistry( + "HKCU\\SOFTWARE\\Mozilla\\NativeMessagingHosts\\com.8bit.bitwarden" + ); + this.deleteWindowsRegistry( + "HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\com.8bit.bitwarden" + ); + break; + case "darwin": { + const nmhs = this.getDarwinNMHS(); + for (const [, value] of Object.entries(nmhs)) { + const p = path.join(value, "NativeMessagingHosts", "com.8bit.bitwarden.json"); + if (existsSync(p)) { + fs.unlink(p); + } + } + break; + } + case "linux": + if ( + existsSync(`${this.homedir()}/.mozilla/native-messaging-hosts/com.8bit.bitwarden.json`) + ) { + fs.unlink(`${this.homedir()}/.mozilla/native-messaging-hosts/com.8bit.bitwarden.json`); + } + + if ( + existsSync( + `${this.homedir()}/.config/google-chrome/NativeMessagingHosts/com.8bit.bitwarden.json` + ) + ) { + fs.unlink( + `${this.homedir()}/.config/google-chrome/NativeMessagingHosts/com.8bit.bitwarden.json` + ); + } + + if ( + existsSync( + `${this.homedir()}/.config/microsoft-edge/NativeMessagingHosts/com.8bit.bitwarden.json` + ) + ) { + fs.unlink( + `${this.homedir()}/.config/microsoft-edge/NativeMessagingHosts/com.8bit.bitwarden.json` + ); + } + break; + default: + break; + } + } + + private getDarwinNMHS() { + /* eslint-disable no-useless-escape */ + return { + Firefox: `${this.homedir()}/Library/Application\ Support/Mozilla/`, + Chrome: `${this.homedir()}/Library/Application\ Support/Google/Chrome/`, + "Chrome Beta": `${this.homedir()}/Library/Application\ Support/Google/Chrome\ Beta/`, + "Chrome Dev": `${this.homedir()}/Library/Application\ Support/Google/Chrome\ Dev/`, + "Chrome Canary": `${this.homedir()}/Library/Application\ Support/Google/Chrome\ Canary/`, + Chromium: `${this.homedir()}/Library/Application\ Support/Chromium/`, + "Microsoft Edge": `${this.homedir()}/Library/Application\ Support/Microsoft\ Edge/`, + "Microsoft Edge Beta": `${this.homedir()}/Library/Application\ Support/Microsoft\ Edge\ Beta/`, + "Microsoft Edge Dev": `${this.homedir()}/Library/Application\ Support/Microsoft\ Edge\ Dev/`, + "Microsoft Edge Canary": `${this.homedir()}/Library/Application\ Support/Microsoft\ Edge\ Canary/`, + Vivaldi: `${this.homedir()}/Library/Application\ Support/Vivaldi/`, + }; + /* eslint-enable no-useless-escape */ + } + + private async writeManifest(destination: string, manifest: object) { + if (!existsSync(path.dirname(destination))) { + await fs.mkdir(path.dirname(destination)); + } + fs.writeFile(destination, JSON.stringify(manifest, null, 2)).catch(this.logService.error); + } + + private binaryPath() { + if (process.platform === "win32") { + return path.join(path.dirname(this.exePath), "resources", "native-messaging.bat"); + } + + return this.exePath; + } + + private getRegeditInstance() { + // eslint-disable-next-line + const regedit = require("regedit"); + regedit.setExternalVBSLocation(path.join(path.dirname(this.exePath), "resources/regedit/vbs")); + + return regedit; + } + + private async createWindowsRegistry(check: string, location: string, jsonFile: string) { + const regedit = this.getRegeditInstance(); + + const list = util.promisify(regedit.list); + const createKey = util.promisify(regedit.createKey); + const putValue = util.promisify(regedit.putValue); + + this.logService.debug(`Adding registry: ${location}`); + + // Check installed + try { + await list(check); + } catch { + this.logService.warning(`Not finding registry ${check} skipping.`); + return; + } + + try { + await createKey(location); + + // Insert path to manifest + const obj: any = {}; + obj[location] = { + default: { + value: jsonFile, + type: "REG_DEFAULT", + }, + }; + + return putValue(obj); + } catch (error) { + this.logService.error(error); + } + } + + private async deleteWindowsRegistry(key: string) { + const regedit = this.getRegeditInstance(); + + const list = util.promisify(regedit.list); + const deleteKey = util.promisify(regedit.deleteKey); + + this.logService.debug(`Removing registry: ${key}`); + + try { + await list(key); + await deleteKey(key); + } catch { + this.logService.error(`Unable to delete registry key: ${key}`); + } + } + + private homedir() { + if (process.platform === "darwin") { + return userInfo().homedir; + } else { + return homedir(); + } + } +} diff --git a/apps/desktop/src/main/powerMonitor.main.ts b/apps/desktop/src/main/powerMonitor.main.ts new file mode 100644 index 0000000000..4fa897c21b --- /dev/null +++ b/apps/desktop/src/main/powerMonitor.main.ts @@ -0,0 +1,47 @@ +import { powerMonitor } from "electron"; + +import { isSnapStore } from "jslib-electron/utils"; + +import { Main } from "../main"; + +// tslint:disable-next-line +const IdleLockSeconds = 5 * 60; // 5 minutes +const IdleCheckInterval = 30 * 1000; // 30 seconds + +export class PowerMonitorMain { + private idle = false; + + constructor(private main: Main) {} + + init() { + // ref: https://github.com/electron/electron/issues/13767 + if (!isSnapStore()) { + // System sleep + powerMonitor.on("suspend", () => { + this.main.messagingService.send("systemSuspended"); + }); + } + + if (process.platform !== "linux") { + // System locked + powerMonitor.on("lock-screen", () => { + this.main.messagingService.send("systemLocked"); + }); + } + + // System idle + global.setInterval(() => { + const idleSeconds: number = powerMonitor.getSystemIdleTime(); + const idle = idleSeconds >= IdleLockSeconds; + if (idle) { + if (this.idle) { + return; + } + + this.main.messagingService.send("systemIdle"); + } + + this.idle = idle; + }, IdleCheckInterval); + } +} diff --git a/apps/desktop/src/models/account.ts b/apps/desktop/src/models/account.ts new file mode 100644 index 0000000000..f92947fb0d --- /dev/null +++ b/apps/desktop/src/models/account.ts @@ -0,0 +1,20 @@ +import { + Account as BaseAccount, + AccountSettings as BaseAccountSettings, +} from "jslib-common/models/domain/account"; + +export class AccountSettings extends BaseAccountSettings { + vaultTimeout = -1; // On Restart +} + +export class Account extends BaseAccount { + settings?: AccountSettings = new AccountSettings(); + + constructor(init: Partial) { + super(init); + Object.assign(this.settings, { + ...new AccountSettings(), + ...this.settings, + }); + } +} diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json new file mode 100644 index 0000000000..a8c141bcf5 --- /dev/null +++ b/apps/desktop/src/package-lock.json @@ -0,0 +1,1299 @@ +{ + "name": "@bitwarden/desktop", + "version": "1.33.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@bitwarden/desktop", + "version": "1.33.1", + "license": "GPL-3.0", + "dependencies": { + "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", + "forcefocus": "^1.1.0", + "keytar": "^7.9.0" + } + }, + "node_modules/@nodert-win10-rs4/windows.security.credentials.ui": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@nodert-win10-rs4/windows.security.credentials.ui/-/windows.security.credentials.ui-0.4.4.tgz", + "integrity": "sha512-P+EsJw5MCQXTxp7mwXfNDvIzIYsB6ple+HNg01QjPWg/PJfAodPuxL6XM7l0sPtYHsDYnfnvoefZMdZRa2Z1ig==", + "hasInstallScript": true, + "dependencies": { + "nan": "latest" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/forcefocus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/forcefocus/-/forcefocus-1.1.0.tgz", + "integrity": "sha512-bnY7rul5kBLyNoCn0FHNiFAF+GGUZx6TvxWhurUS4PlmOzF+FMixGIigHH5UcyM3w1gp2TxAtP6MOUSXA15Sgw==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0", + "prebuild-install": "^5.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/keytar/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/keytar/node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/keytar/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/keytar/node_modules/node-abi": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.15.0.tgz", + "integrity": "sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keytar/node_modules/prebuild-install": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz", + "integrity": "sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keytar/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keytar/node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node_modules/noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@nodert-win10-rs4/windows.security.credentials.ui": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@nodert-win10-rs4/windows.security.credentials.ui/-/windows.security.credentials.ui-0.4.4.tgz", + "integrity": "sha512-P+EsJw5MCQXTxp7mwXfNDvIzIYsB6ple+HNg01QjPWg/PJfAodPuxL6XM7l0sPtYHsDYnfnvoefZMdZRa2Z1ig==", + "requires": { + "nan": "latest" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "forcefocus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/forcefocus/-/forcefocus-1.1.0.tgz", + "integrity": "sha512-bnY7rul5kBLyNoCn0FHNiFAF+GGUZx6TvxWhurUS4PlmOzF+FMixGIigHH5UcyM3w1gp2TxAtP6MOUSXA15Sgw==", + "requires": { + "bindings": "^1.3.0", + "prebuild-install": "^5.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "requires": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + }, + "dependencies": { + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "node-abi": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.15.0.tgz", + "integrity": "sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA==", + "requires": { + "semver": "^7.3.5" + } + }, + "prebuild-install": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz", + "integrity": "sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + } + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "requires": { + "semver": "^5.4.1" + } + }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==" + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json new file mode 100644 index 0000000000..1dc98451c7 --- /dev/null +++ b/apps/desktop/src/package.json @@ -0,0 +1,19 @@ +{ + "name": "@bitwarden/desktop", + "productName": "Bitwarden", + "description": "A secure and free password manager for all of your devices.", + "version": "1.33.1", + "author": "Bitwarden Inc. (https://bitwarden.com)", + "homepage": "https://bitwarden.com", + "license": "GPL-3.0", + "main": "main.js", + "repository": { + "type": "git", + "url": "https://github.com/bitwarden/desktop" + }, + "dependencies": { + "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", + "forcefocus": "^1.1.0", + "keytar": "^7.9.0" + } +} diff --git a/apps/desktop/src/proxy/ipc.ts b/apps/desktop/src/proxy/ipc.ts new file mode 100644 index 0000000000..228179a5e4 --- /dev/null +++ b/apps/desktop/src/proxy/ipc.ts @@ -0,0 +1,53 @@ +/* eslint-disable no-console */ +import { homedir } from "os"; + +import * as ipc from "node-ipc"; + +ipc.config.id = "proxy"; +ipc.config.retry = 1500; +ipc.config.logger = console.warn; // Stdout is used for native messaging +if (process.platform === "darwin") { + ipc.config.socketRoot = `${homedir()}/tmp/`; +} + +export default class IPC { + onMessage: (message: object) => void; + + private connected = false; + + connect() { + ipc.connectTo("bitwarden", () => { + ipc.of.bitwarden.on("connect", () => { + this.connected = true; + console.error("## connected to bitwarden desktop ##"); + + // Notify browser extension, connection is established to desktop application. + this.onMessage({ command: "connected" }); + }); + + ipc.of.bitwarden.on("disconnect", () => { + this.connected = false; + console.error("disconnected from world"); + + // Notify browser extension, no connection to desktop application. + this.onMessage({ command: "disconnected" }); + }); + + ipc.of.bitwarden.on("message", (message: any) => { + this.onMessage(message); + }); + + ipc.of.bitwarden.on("error", (err: any) => { + console.error("error", err); + }); + }); + } + + isConnected(): boolean { + return this.connected; + } + + send(json: object) { + ipc.of.bitwarden.emit("message", json); + } +} diff --git a/apps/desktop/src/proxy/native-messaging-proxy.ts b/apps/desktop/src/proxy/native-messaging-proxy.ts new file mode 100644 index 0000000000..f1b54a8201 --- /dev/null +++ b/apps/desktop/src/proxy/native-messaging-proxy.ts @@ -0,0 +1,23 @@ +import IPC from "./ipc"; +import NativeMessage from "./nativemessage"; + +// Proxy is a lightweight application which provides bi-directional communication +// between the browser extension and a running desktop application. +// +// Browser extension <-[native messaging]-> proxy <-[ipc]-> desktop +export class NativeMessagingProxy { + private ipc: IPC; + private nativeMessage: NativeMessage; + + constructor() { + this.ipc = new IPC(); + this.nativeMessage = new NativeMessage(this.ipc); + } + + run() { + this.ipc.connect(); + this.nativeMessage.listen(); + + this.ipc.onMessage = this.nativeMessage.send; + } +} diff --git a/apps/desktop/src/proxy/nativemessage.ts b/apps/desktop/src/proxy/nativemessage.ts new file mode 100644 index 0000000000..f7a32296f8 --- /dev/null +++ b/apps/desktop/src/proxy/nativemessage.ts @@ -0,0 +1,95 @@ +/* eslint-disable no-console */ +import IPC from "./ipc"; + +// Mostly based on the example from MDN, +// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging +export default class NativeMessage { + ipc: IPC; + + constructor(ipc: IPC) { + this.ipc = ipc; + } + + send(message: object) { + const messageBuffer = Buffer.from(JSON.stringify(message)); + + const headerBuffer = Buffer.alloc(4); + headerBuffer.writeUInt32LE(messageBuffer.length, 0); + + process.stdout.write(Buffer.concat([headerBuffer, messageBuffer])); + } + + listen() { + let payloadSize: number = null; + + // A queue to store the chunks as we read them from stdin. + // This queue can be flushed when `payloadSize` data has been read + const chunks: any = []; + + // Only read the size once for each payload + const sizeHasBeenRead = () => Boolean(payloadSize); + + // All the data has been read, reset everything for the next message + const flushChunksQueue = () => { + payloadSize = null; + chunks.splice(0); + }; + + const processData = () => { + // Create one big buffer with all all the chunks + const stringData = Buffer.concat(chunks); + console.error(stringData); + + // The browser will emit the size as a header of the payload, + // if it hasn't been read yet, do it. + // The next time we'll need to read the payload size is when all of the data + // of the current payload has been read (ie. data.length >= payloadSize + 4) + if (!sizeHasBeenRead()) { + try { + payloadSize = stringData.readUInt32LE(0); + } catch (e) { + console.error(e); + return; + } + } + + // If the data we have read so far is >= to the size advertised in the header, + // it means we have all of the data sent. + // We add 4 here because that's the size of the bytes that old the payloadSize + if (stringData.length >= payloadSize + 4) { + // Remove the header + const contentWithoutSize = stringData.slice(4, payloadSize + 4).toString(); + + // Reset the read size and the queued chunks + flushChunksQueue(); + + const json = JSON.parse(contentWithoutSize); + + // Forward to desktop application + this.ipc.send(json); + } + }; + + process.stdin.on("readable", () => { + // A temporary variable holding the nodejs.Buffer of each + // chunk of data read off stdin + let chunk = null; + + // Read all of the available data + // tslint:disable-next-line:no-conditional-assignment + while ((chunk = process.stdin.read()) !== null) { + chunks.push(chunk); + } + + try { + processData(); + } catch (e) { + console.error(e); + } + }); + + process.stdin.on("end", () => { + process.exit(0); + }); + } +} diff --git a/apps/desktop/src/scripts/duo.js b/apps/desktop/src/scripts/duo.js new file mode 100644 index 0000000000..8b712dcf25 --- /dev/null +++ b/apps/desktop/src/scripts/duo.js @@ -0,0 +1,418 @@ +/** + * Duo Web SDK v2 + * Copyright 2017, Duo Security + */ + +var Duo; +(function (root, factory) { + // Browser globals (root is window) + var d = factory(); + // If the Javascript was loaded via a script tag, attempt to autoload + // the frame. + d._onReady(d.init); + // Attach Duo to the `window` object + root.Duo = Duo = d; +}(window, function () { + var DUO_MESSAGE_FORMAT = /^(?:AUTH|ENROLL)+\|[A-Za-z0-9\+\/=]+\|[A-Za-z0-9\+\/=]+$/; + var DUO_ERROR_FORMAT = /^ERR\|[\w\s\.\(\)]+$/; + var DUO_OPEN_WINDOW_FORMAT = /^DUO_OPEN_WINDOW\|/; + var VALID_OPEN_WINDOW_DOMAINS = [ + 'duo.com', + 'duosecurity.com', + 'duomobile.s3-us-west-1.amazonaws.com' + ]; + + var iframeId = 'duo_iframe', + postAction = '', + postArgument = 'sig_response', + host, + sigRequest, + duoSig, + appSig, + iframe, + submitCallback; + + function throwError(message, url) { + throw new Error( + 'Duo Web SDK error: ' + message + + (url ? ('\n' + 'See ' + url + ' for more information') : '') + ); + } + + function hyphenize(str) { + return str.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase(); + } + + // cross-browser data attributes + function getDataAttribute(element, name) { + if ('dataset' in element) { + return element.dataset[name]; + } else { + return element.getAttribute('data-' + hyphenize(name)); + } + } + + // cross-browser event binding/unbinding + function on(context, event, fallbackEvent, callback) { + if ('addEventListener' in window) { + context.addEventListener(event, callback, false); + } else { + context.attachEvent(fallbackEvent, callback); + } + } + + function off(context, event, fallbackEvent, callback) { + if ('removeEventListener' in window) { + context.removeEventListener(event, callback, false); + } else { + context.detachEvent(fallbackEvent, callback); + } + } + + function onReady(callback) { + on(document, 'DOMContentLoaded', 'onreadystatechange', callback); + } + + function offReady(callback) { + off(document, 'DOMContentLoaded', 'onreadystatechange', callback); + } + + function onMessage(callback) { + on(window, 'message', 'onmessage', callback); + } + + function offMessage(callback) { + off(window, 'message', 'onmessage', callback); + } + + /** + * Parse the sig_request parameter, throwing errors if the token contains + * a server error or if the token is invalid. + * + * @param {String} sig Request token + */ + function parseSigRequest(sig) { + if (!sig) { + // nothing to do + return; + } + + // see if the token contains an error, throwing it if it does + if (sig.indexOf('ERR|') === 0) { + throwError(sig.split('|')[1]); + } + + // validate the token + if (sig.indexOf(':') === -1 || sig.split(':').length !== 2) { + throwError( + 'Duo was given a bad token. This might indicate a configuration ' + + 'problem with one of Duo\'s client libraries.', + 'https://www.duosecurity.com/docs/duoweb#first-steps' + ); + } + + var sigParts = sig.split(':'); + + // hang on to the token, and the parsed duo and app sigs + sigRequest = sig; + duoSig = sigParts[0]; + appSig = sigParts[1]; + + return { + sigRequest: sig, + duoSig: sigParts[0], + appSig: sigParts[1] + }; + } + + /** + * This function is set up to run when the DOM is ready, if the iframe was + * not available during `init`. + */ + function onDOMReady() { + iframe = document.getElementById(iframeId); + + if (!iframe) { + throw new Error( + 'This page does not contain an iframe for Duo to use.' + + 'Add an element like ' + + 'to this page. ' + + 'See https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe ' + + 'for more information.' + ); + } + + // we've got an iframe, away we go! + ready(); + + // always clean up after yourself + offReady(onDOMReady); + } + + /** + * Validate that a MessageEvent came from the Duo service, and that it + * is a properly formatted payload. + * + * The Google Chrome sign-in page injects some JS into pages that also + * make use of postMessage, so we need to do additional validation above + * and beyond the origin. + * + * @param {MessageEvent} event Message received via postMessage + */ + function isDuoMessage(event) { + return Boolean( + event.origin === ('https://' + host) && + typeof event.data === 'string' && + ( + event.data.match(DUO_MESSAGE_FORMAT) || + event.data.match(DUO_ERROR_FORMAT) || + event.data.match(DUO_OPEN_WINDOW_FORMAT) + ) + ); + } + + /** + * Validate the request token and prepare for the iframe to become ready. + * + * All options below can be passed into an options hash to `Duo.init`, or + * specified on the iframe using `data-` attributes. + * + * Options specified using the options hash will take precedence over + * `data-` attributes. + * + * Example using options hash: + * ```javascript + * Duo.init({ + * iframe: "some_other_id", + * host: "api-main.duo.test", + * sig_request: "...", + * post_action: "/auth", + * post_argument: "resp" + * }); + * ``` + * + * Example using `data-` attributes: + * ``` + * + * ``` + * + * @param {Object} options + * @param {String} options.iframe The iframe, or id of an iframe to set up + * @param {String} options.host Hostname + * @param {String} options.sig_request Request token + * @param {String} [options.post_action=''] URL to POST back to after successful auth + * @param {String} [options.post_argument='sig_response'] Parameter name to use for response token + * @param {Function} [options.submit_callback] If provided, duo will not submit the form instead execute + * the callback function with reference to the "duo_form" form object + * submit_callback can be used to prevent the webpage from reloading. + */ + function init(options) { + if (options) { + if (options.host) { + host = options.host; + } + + if (options.sig_request) { + parseSigRequest(options.sig_request); + } + + if (options.post_action) { + postAction = options.post_action; + } + + if (options.post_argument) { + postArgument = options.post_argument; + } + + if (options.iframe) { + if (options.iframe.tagName) { + iframe = options.iframe; + } else if (typeof options.iframe === 'string') { + iframeId = options.iframe; + } + } + + if (typeof options.submit_callback === 'function') { + submitCallback = options.submit_callback; + } + } + + // if we were given an iframe, no need to wait for the rest of the DOM + if (false && iframe) { + ready(); + } else { + // try to find the iframe in the DOM + iframe = document.getElementById(iframeId); + + // iframe is in the DOM, away we go! + if (iframe) { + ready(); + } else { + // wait until the DOM is ready, then try again + onReady(onDOMReady); + } + } + + // always clean up after yourself! + offReady(init); + } + + /** + * This function is called when a message was received from another domain + * using the `postMessage` API. Check that the event came from the Duo + * service domain, and that the message is a properly formatted payload, + * then perform the post back to the primary service. + * + * @param event Event object (contains origin and data) + */ + function onReceivedMessage(event) { + if (isDuoMessage(event)) { + if (event.data.match(DUO_OPEN_WINDOW_FORMAT)) { + var url = event.data.substring("DUO_OPEN_WINDOW|".length); + if (isValidUrlToOpen(url)) { + // Open the URL that comes after the DUO_WINDOW_OPEN token. + window.open(url, "_self"); + } + } + else { + // the event came from duo, do the post back + doPostBack(event.data); + + // always clean up after yourself! + offMessage(onReceivedMessage); + } + } + } + + /** + * Validate that this passed in URL is one that we will actually allow to + * be opened. + * @param url String URL that the message poster wants to open + * @returns {boolean} true if we allow this url to be opened in the window + */ + function isValidUrlToOpen(url) { + if (!url) { + return false; + } + + var parser = document.createElement('a'); + parser.href = url; + + if (parser.protocol === "duotrustedendpoints:") { + return true; + } else if (parser.protocol !== "https:") { + return false; + } + + for (var i = 0; i < VALID_OPEN_WINDOW_DOMAINS.length; i++) { + if (parser.hostname.endsWith("." + VALID_OPEN_WINDOW_DOMAINS[i]) || + parser.hostname === VALID_OPEN_WINDOW_DOMAINS[i]) { + return true; + } + } + return false; + } + + /** + * Point the iframe at Duo, then wait for it to postMessage back to us. + */ + function ready() { + if (!host) { + host = getDataAttribute(iframe, 'host'); + + if (!host) { + throwError( + 'No API hostname is given for Duo to use. Be sure to pass ' + + 'a `host` parameter to Duo.init, or through the `data-host` ' + + 'attribute on the iframe element.', + 'https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe' + ); + } + } + + if (!duoSig || !appSig) { + parseSigRequest(getDataAttribute(iframe, 'sigRequest')); + + if (!duoSig || !appSig) { + throwError( + 'No valid signed request is given. Be sure to give the ' + + '`sig_request` parameter to Duo.init, or use the ' + + '`data-sig-request` attribute on the iframe element.', + 'https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe' + ); + } + } + + // if postAction/Argument are defaults, see if they are specified + // as data attributes on the iframe + if (postAction === '') { + postAction = getDataAttribute(iframe, 'postAction') || postAction; + } + + if (postArgument === 'sig_response') { + postArgument = getDataAttribute(iframe, 'postArgument') || postArgument; + } + + // point the iframe at Duo + iframe.src = [ + 'https://', host, '/frame/web/v1/auth?tx=', duoSig, + '&parent=', encodeURIComponent(document.location.href), + '&v=2.6' + ].join(''); + + // listen for the 'message' event + onMessage(onReceivedMessage); + } + + /** + * We received a postMessage from Duo. POST back to the primary service + * with the response token, and any additional user-supplied parameters + * given in form#duo_form. + */ + function doPostBack(response) { + // create a hidden input to contain the response token + var input = document.createElement('input'); + input.type = 'hidden'; + input.name = postArgument; + input.value = response + ':' + appSig; + + // user may supply their own form with additional inputs + var form = document.getElementById('duo_form'); + + // if the form doesn't exist, create one + if (!form) { + form = document.createElement('form'); + + // insert the new form after the iframe + iframe.parentElement.insertBefore(form, iframe.nextSibling); + } + + // make sure we are actually posting to the right place + form.method = 'POST'; + form.action = postAction; + + // add the response token input to the form + form.appendChild(input); + + // away we go! + if (typeof submitCallback === "function") { + submitCallback.call(null, form); + } else { + form.submit(); + } + } + + return { + init: init, + _onReady: onReady, + _parseSigRequest: parseSigRequest, + _isDuoMessage: isDuoMessage, + _doPostBack: doPostBack + }; +})); diff --git a/apps/desktop/src/scss/base.scss b/apps/desktop/src/scss/base.scss new file mode 100644 index 0000000000..708895953c --- /dev/null +++ b/apps/desktop/src/scss/base.scss @@ -0,0 +1,135 @@ +@import "variables.scss"; + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html, +body { + height: 100%; + font-family: $font-family-sans-serif; + font-size: $font-size-base; + line-height: $line-height-base; +} + +body { + color: $text-color; + background-color: $background-color-alt2; + + @include themify($themes) { + color: themed("textColor"); + background-color: themed("backgroundColorAlt2"); + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: $font-family-sans-serif; + + @include themify($themes) { + color: themed("textColor"); + } +} + +p { + margin-bottom: 10px; +} + +ul, +ol { + margin-bottom: 10px; +} + +img { + border: none; +} + +a { + text-decoration: none; + + @include themify($themes) { + color: themed("primaryColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + color: darken(themed("primaryColor"), 6%); + } + } +} + +input, +select, +textarea { + @include themify($themes) { + color: themed("textColor"); + background-color: themed("inputBackgroundColor"); + } +} + +input, +select, +textarea, +button { + font-size: $font-size-base; + font-family: $font-family-sans-serif; + line-height: $line-height-base; +} + +button { + border: none; + background: transparent; + color: inherit; + white-space: nowrap; + cursor: pointer; +} + +textarea { + resize: vertical; +} + +div:not(.modal)::-webkit-scrollbar, +.cdk-virtual-scroll-viewport::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +div:not(.modal)::-webkit-scrollbar-track, +.cdk-virtual-scroll-viewport::-webkit-scrollbar-track { + background-color: transparent; +} + +div:not(.modal)::-webkit-scrollbar-thumb, +.cdk-virtual-scroll-viewport::-webkit-scrollbar-thumb { + border-radius: 10px; + margin-right: 1px; + + @include themify($themes) { + background-color: themed("scrollbarColor"); + } + + &:hover { + @include themify($themes) { + background-color: themed("scrollbarHoverColor"); + } + } +} + +// cdk-virtual-scroll +.cdk-virtual-scroll-viewport { + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} + +.cdk-virtual-scroll-content-wrapper { + width: 100%; +} diff --git a/apps/desktop/src/scss/box.scss b/apps/desktop/src/scss/box.scss new file mode 100644 index 0000000000..a955617f06 --- /dev/null +++ b/apps/desktop/src/scss/box.scss @@ -0,0 +1,488 @@ +@import "variables.scss"; + +.box { + position: relative; + width: 100%; + + .box-header { + margin: 0 10px 5px 10px; + text-transform: uppercase; + display: flex; + + @include themify($themes) { + color: themed("headingColor"); + } + + button { + background-color: transparent; + border: none; + text-transform: uppercase; + + @include themify($themes) { + color: themed("headingColor"); + } + } + + .toggle { + background-color: transparent; + margin-left: 4px; + font-size: $font-size-small; + @include themify($themes) { + color: themed("headingColor"); + } + } + } + + .box-header-expandable { + border: none; + padding: 5px 0px; + text-transform: uppercase; + display: flex; + width: 100%; + box-sizing: border-box; + + @include themify($themes) { + color: themed("headingColor"); + background-color: themed("boxBackgroundColor"); + } + + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("boxBackgroundHoverColor"); + } + } + + .icon { + display: flex; + align-items: flex-end; + margin-left: 5px; + + @include themify($themes) { + color: themed("headingColor"); + } + } + } + + .box-content { + border-radius: $border-radius; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), + 0 1px 5px 0 rgba(0, 0, 0, 0.2); + + @include themify($themes) { + background-color: themed("boxBackgroundColor"); + } + + &.box-content-padded { + padding: 10px 15px; + } + + &.condensed .box-content-row, + .box-content-row.condensed { + padding-top: 5px; + padding-bottom: 5px; + } + + &.no-hover .box-content-row, + .box-content-row.no-hover { + &:hover, + &:focus { + background-color: initial; + } + } + } + + .box-footer { + margin: 5px 10px; + font-size: $font-size-small; + + @include themify($themes) { + color: themed("mutedColor"); + } + } +} + +.box-content-row { + display: block; + width: 100%; + padding: 10px 15px; + position: relative; + z-index: 1; + text-align: left; + + &:before { + content: ""; + position: absolute; + right: 0; + bottom: 0; + height: 1px; + width: calc(100% - 10px); + border-bottom: 1px solid #000000; + + @include themify($themes) { + border-bottom-color: themed("boxBorderColor"); + } + } + + &:first-child, + &:last-child { + border-radius: $border-radius; + + .progress { + border-bottom-left-radius: $border-radius; + border-bottom-right-radius: $border-radius; + } + } + + &:last-child { + &:before { + border: none; + height: 0; + } + } + + &:after { + content: ""; + display: table; + clear: both; + } + + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("boxBackgroundHoverColor"); + > * { + background-color: themed("boxBackgroundHoverColor"); + } + } + } + + &.pre { + white-space: pre; + overflow-x: auto; + } + + &.pre-wrap { + white-space: pre-wrap; + overflow-x: auto; + } + + .row-label, + label:not(.unstyled) { + font-size: $font-size-small; + display: block; + width: 100%; + margin-bottom: 5px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + .sub-label { + margin-left: 10px; + } + } + + .text, + .detail { + display: block; + + @include themify($themes) { + color: themed("textColor"); + } + } + + .detail { + font-size: $font-size-small; + + @include themify($themes) { + color: themed("mutedColor"); + } + } + + .img-right { + float: right; + margin-left: 10px; + } + + .row-main { + flex-grow: 1; + min-width: 0; + } + + &.box-content-row-flex, + .box-content-row-flex, + &.box-content-row-checkbox, + &.box-content-row-input, + &.box-content-row-slider, + &.box-content-row-multi { + display: flex; + align-items: center; + word-break: break-word; + } + + &.box-content-row-multi { + width: 100%; + + input:not([type="checkbox"]):not([type="radio"]) { + width: 100%; + } + + input + label.sr-only + select { + margin-top: 5px; + } + + > a, + > button { + padding: 8px 8px 8px 4px; + margin: 0; + + @include themify($themes) { + color: themed("dangerColor"); + } + } + } + + &.box-content-row-checkbox, + &.box-content-row-input, + &.box-content-row-slider { + label, + .row-label { + font-size: $font-size-base; + display: inline; + width: initial; + margin-bottom: 0; + + @include themify($themes) { + color: themed("textColor"); + } + } + + > span { + @include themify($themes) { + color: themed("mutedColor"); + } + } + + > input { + margin: 0 0 0 auto; + padding: 0; + } + + > * { + margin-right: 15px; + + &:last-child { + margin-right: 0; + } + } + } + + &.box-content-row-input { + label { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + input { + text-align: right; + width: 45px !important; + } + } + + &.box-content-row-slider { + input[type="range"] { + height: 10px; + width: 220px !important; + } + + input[type="number"] { + text-align: right; + width: 45px !important; + } + + label { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + + &.box-content-row-radio { + display: flex; + flex-direction: column; + .item { + display: flex; + flex: 1; + align-items: center; + + > .radio { + margin-right: 5px; + margin-top: 0; + } + } + } + + input:not([type="checkbox"]):not([type="radio"]), + textarea { + border: none; + width: 100%; + background-color: transparent; + + &::-webkit-input-placeholder { + @include themify($themes) { + color: themed("inputPlaceholderColor"); + } + } + + &:focus { + outline: none; + } + } + + select { + width: 100%; + border: 1px solid #000000; + border-radius: $border-radius; + + @include themify($themes) { + border-color: themed("inputBorderColor"); + } + } + + .action-buttons { + display: flex; + margin-left: 5px; + + .row-btn { + @extend .icon-btn; + } + + &.no-pad .row-btn { + padding-top: 0; + padding-bottom: 0; + } + } + + &:not(.box-draggable-row) { + .action-buttons .row-btn:last-child { + margin-right: -6px !important; + } + } + + &.box-draggable-row { + &.box-content-row-checkbox { + input[type="checkbox"] + .drag-handle { + margin-left: 10px; + } + } + } + + .drag-handle { + cursor: move; + padding: 10px 2px 10px 8px; + user-select: none; + + @include themify($themes) { + color: themed("mutedColor"); + } + } + + &.cdk-drag-preview { + position: relative; + display: flex; + align-items: center; + opacity: 0.8; + + @include themify($themes) { + background-color: themed("boxBackgroundColor"); + } + } + + select.field-type { + margin: 5px 0 0 25px; + width: calc(100% - 25px); + } + + .row-sub-icon { + @include themify($themes) { + color: themed("disabledIconColor"); + } + } + + .row-sub-label { + margin: 0 15px; + white-space: nowrap; + + @include themify($themes) { + color: themed("mutedColor"); + } + } + + .progress { + display: flex; + height: 5px; + overflow: hidden; + margin: 5px -15px -10px; + + .progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + white-space: nowrap; + background-color: $brand-primary; + } + } + + .icon { + display: flex; + justify-content: center; + align-items: center; + min-width: 34px; + height: 100%; + margin-left: -5px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + &.icon-small { + min-width: 25px; + } + } + + .radio-group { + display: flex; + justify-content: flex-start; + align-items: center; + margin-bottom: 5px; + + input { + flex-grow: 0; + } + + label { + margin: 0 0 0 5px; + flex-grow: 1; + font-size: $font-size-base; + display: block; + width: 100%; + + @include themify($themes) { + color: themed("textColor"); + } + } + + &.align-start { + align-items: start; + margin-top: 10px; + + label { + margin-top: -4px; + } + } + } +} diff --git a/apps/desktop/src/scss/buttons.scss b/apps/desktop/src/scss/buttons.scss new file mode 100644 index 0000000000..3d7ccfe2fa --- /dev/null +++ b/apps/desktop/src/scss/buttons.scss @@ -0,0 +1,170 @@ +@import "variables.scss"; + +.btn, +.vault .footer button, +.modal-footer button { + border-radius: $border-radius; + padding: 7px 15px; + border: 1px solid #000000; + font-size: $font-size-base; + white-space: nowrap; + text-align: center; + cursor: pointer; + + @include themify($themes) { + background-color: themed("buttonBackgroundColor"); + border-color: themed("buttonBorderColor"); + color: themed("buttonColor"); + } + + &.primary { + @include themify($themes) { + color: themed("buttonPrimaryColor"); + } + } + + &.danger { + @include themify($themes) { + color: themed("buttonDangerColor"); + } + } + + &:hover:not([disabled]) { + cursor: pointer; + + @include themify($themes) { + background-color: darken(themed("buttonBackgroundColor"), 1.5%); + border-color: darken(themed("buttonBorderColor"), 17%); + color: darken(themed("buttonColor"), 10%); + } + + &.primary { + @include themify($themes) { + color: darken(themed("buttonPrimaryColor"), 6%); + } + } + + &.danger { + @include themify($themes) { + color: darken(themed("buttonDangerColor"), 6%); + } + } + } + + &:focus:not([disabled]) { + cursor: pointer; + + @include themify($themes) { + background-color: darken(themed("buttonBackgroundColor"), 6%); + border-color: darken(themed("buttonBorderColor"), 25%); + } + } + + &[disabled] { + opacity: 0.65; + cursor: default !important; + } + + &.block { + display: block; + width: 100%; + } + + &.link { + border: none !important; + background: none !important; + + &:focus { + text-decoration: underline; + } + } +} + +.action-buttons { + .btn { + &:focus { + outline: auto; + } + } +} + +.btn-submit { + position: relative; + overflow: hidden; + + .bwi-spinner { + position: absolute; + display: none; + align-items: center; + justify-content: center; + bottom: 0; + top: 0; + left: 0; + right: 0; + } + + &:disabled:not(.manual), + &.loading { + .bwi-spinner { + display: flex; + } + + span { + visibility: hidden; + } + } +} + +.icon-btn { + cursor: pointer; + padding: 10px 8px; + background: none; + border: none; + + @include themify($themes) { + color: themed("boxRowButtonColor"); + } + + &.primary { + @include themify($themes) { + color: themed("buttonPrimaryColor"); + } + } + + &.danger { + @include themify($themes) { + color: themed("buttonDangerColor"); + } + } + + &:hover, + &:focus { + @include themify($themes) { + color: themed("boxRowButtonHoverColor"); + } + + &.primary { + @include themify($themes) { + color: darken(themed("buttonPrimaryColor"), 6%); + } + } + + &.danger { + @include themify($themes) { + color: darken(themed("buttonDangerColor"), 6%); + } + } + } + + &.disabled { + @include themify($themes) { + color: themed("disabledIconColor"); + } + + &:hover { + @include themify($themes) { + color: themed("disabledIconColor"); + } + } + } +} diff --git a/apps/desktop/src/scss/environment.scss b/apps/desktop/src/scss/environment.scss new file mode 100644 index 0000000000..83c3440ce7 --- /dev/null +++ b/apps/desktop/src/scss/environment.scss @@ -0,0 +1,55 @@ +html.os_macos { + body.layout_frontend { + -webkit-app-region: drag; + + button, + a, + i, + b, + span, + input, + p, + h1, + h2, + h3, + h4, + h5, + h6, + img, + select, + textarea, + label, + .box, + .modal-backdrop { + -webkit-app-region: no-drag; + } + } + + #login-page { + .content { + a.settings-icon { + position: absolute; + left: unset; + right: 20px; + + span { + margin-right: 8px; + float: left; + } + } + } + } + + .vault .header-search { + -webkit-app-region: drag; + + input, + i { + -webkit-app-region: no-drag; + } + } + + .vault > .groupings > .content > .inner-content { + padding-top: 0; + } +} diff --git a/apps/desktop/src/scss/grid.scss b/apps/desktop/src/scss/grid.scss new file mode 100644 index 0000000000..8f58d81648 --- /dev/null +++ b/apps/desktop/src/scss/grid.scss @@ -0,0 +1,10 @@ +.row { + display: flex; + margin: 0 -15px; +} + +.col { + flex-basis: 0; + flex-grow: 1; + padding: 0 15px; +} diff --git a/apps/desktop/src/scss/header.scss b/apps/desktop/src/scss/header.scss new file mode 100644 index 0000000000..0133dc6cc6 --- /dev/null +++ b/apps/desktop/src/scss/header.scss @@ -0,0 +1,192 @@ +.header { + -webkit-app-region: drag; + min-height: 44px; + max-height: 44px; + border-bottom: 1px solid #000000; + display: grid; + grid-template-columns: 25% 1fr 25%; + grid-column-gap: 5px; + justify-items: center; + align-items: center; + + @include themify($themes) { + background-color: themed("headerBackgroundColor"); + border-bottom-color: themed("headerBorderColor"); + } + + app-search { + grid-column-start: 2; + width: 100%; + } + + app-account-switcher { + justify-self: end; + height: 100%; + } + + .search { + padding: 0 7px; + width: 100%; + text-align: left; + position: relative; + + .bwi { + position: absolute; + top: 7px; + left: 15px; + + @include themify($themes) { + color: themed("headerInputPlaceholderColor"); + } + } + + input { + width: 100%; + margin: 0; + border: none; + padding: 5px 10px 5px 30px; + border-radius: $border-radius; + + @include themify($themes) { + background-color: themed("headerInputBackgroundColor"); + color: themed("headerInputColor"); + } + + &:focus { + border-radius: $border-radius; + outline: none; + + @include themify($themes) { + background-color: themed("headerInputBackgroundFocusColor"); + } + } + + &::-webkit-input-placeholder { + @include themify($themes) { + color: themed("headerInputPlaceholderColor"); + } + } + } + } +} + +.account-switcher { + display: grid; + grid-template-columns: auto 1fr auto; + grid-column-gap: 5px; + align-items: center; + justify-items: center; + padding: 0 10px; + height: 100%; + user-select: none; + + border: none; + background: transparent; + width: auto; + + @include themify($themes) { + color: themed("accountSwitcherTextColor"); + } + + img { + display: block; + } + + span { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + &:hover { + @include themify($themes) { + background-color: themed("headerBorderColor"); + color: themed("accountSwitcherTextColor"); + } + } +} + +.account-switcher-dropdown { + @include themify($themes) { + background-color: themed("accountSwitcherBackgroundColor"); + } + margin-right: 5px; + margin-top: 1px; // Fix for border-bottom in header + width: 100%; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), + 0 1px 5px 0 rgba(0, 0, 0, 0.2); + border-radius: $border-radius; + + button { + border: none; + background: transparent; + width: 100%; + padding: 5px 10px; + + @include themify($themes) { + color: themed("textColor"); + } + + &:hover { + @include themify($themes) { + background-color: themed("backgroundColorAlt2"); + } + } + } + + .accounts { + padding: 7px 0; + + .account { + display: grid; + grid-template-columns: 24px auto 24px; + grid-column-gap: 11px; + align-items: center; + justify-items: left; + + .accountInfo { + display: grid; + text-align: left; + + .email { + font-size: $font-size-base; + max-width: 168px; + overflow: hidden; + text-overflow: ellipsis; + } + + .server { + font-size: $font-size-small; + } + + .status { + font-size: $font-size-small; + font-style: italic; + } + } + } + } + + .border { + @include themify($themes) { + background: themed("borderColor"); + } + left: 10px; + width: calc(100% - 20px); + height: 1px; + position: relative; + } + + .add { + margin: 4px 0; + text-align: left; + } + + .accountLimitReached { + display: block; + margin: 4px 0; + padding: 5px 10px; + font-size: $font-size-small; + } +} diff --git a/apps/desktop/src/scss/list.scss b/apps/desktop/src/scss/list.scss new file mode 100644 index 0000000000..45288e5e6c --- /dev/null +++ b/apps/desktop/src/scss/list.scss @@ -0,0 +1,149 @@ +@import "variables.scss"; + +.list > button { + padding: 3px 10px; + text-decoration: none; + user-select: none; + z-index: 1; + + @include themify($themes) { + color: themed("textColor"); + background-color: themed("listItemBackgroundColor"); + } + + &:after { + content: ""; + display: table; + clear: both; + } + + &:before { + content: ""; + position: absolute; + right: 0; + bottom: 0; + height: 1px; + width: calc(100% - 10px); + border-bottom: 1px solid #000000; + + @include themify($themes) { + border-bottom-color: themed("listItemBorderColor"); + } + } + + &:last-child:before { + border: none; + height: 0; + } + + &:hover, + &:focus, + &.active { + @include themify($themes) { + background-color: themed("listItemBackgroundHoverColor"); + } + } + + &.active { + border-left: 5px solid #000000; + padding-left: 5px; + + @include themify($themes) { + border-left-color: themed("primaryColor"); + } + } + + &:focus:not(.active) { + border-left: 5px solid #000000; + padding-left: 5px; + + @include themify($themes) { + border-left-color: themed("mutedColor"); + } + } + + .text, + .detail { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + + @include themify($themes) { + color: themed("textColor"); + } + } + + .detail { + font-size: $font-size-small; + + @include themify($themes) { + color: themed("mutedColor"); + } + } + + .icon { + display: flex; + justify-content: center; + align-items: center; + float: left; + height: 36px; + width: 34px; + margin-left: -5px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + img { + border-radius: $border-radius; + max-height: 20px; + max-width: 20px; + } + } +} + +.list > button.flex-list-item { + display: flex; + align-items: center; + width: 100%; + text-align: left; + + .item-icon { + display: block; + margin-left: -5px; + margin-right: 4px; + @include themify($themes) { + color: themed("mutedColor"); + } + } + + .item-content { + display: block; + .item-title { + display: block; + .title-badges { + @include themify($themes) { + color: themed("mutedColor"); + } + } + } + + .item-details { + font-size: $font-size-small; + @include themify($themes) { + color: themed("mutedColor"); + } + } + } + + .flex-cipher-list-item { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + > * { + text-align: left; + } + } +} diff --git a/apps/desktop/src/scss/misc.scss b/apps/desktop/src/scss/misc.scss new file mode 100644 index 0000000000..250ecc1973 --- /dev/null +++ b/apps/desktop/src/scss/misc.scss @@ -0,0 +1,470 @@ +@import "variables.scss"; + +small, +.small { + font-size: $font-size-small; +} + +.bg-primary { + @include themify($themes) { + background-color: themed("primaryColor") !important; + } +} + +.bg-success { + @include themify($themes) { + background-color: themed("successColor") !important; + } +} + +.bg-danger { + @include themify($themes) { + background-color: themed("dangerColor") !important; + } +} + +.bg-info { + @include themify($themes) { + background-color: themed("infoColor") !important; + } +} + +.bg-warning { + @include themify($themes) { + background-color: themed("warningColor") !important; + } +} + +.text-primary { + @include themify($themes) { + color: themed("primaryColor") !important; + } +} + +.text-success { + @include themify($themes) { + color: themed("successColor") !important; + } +} + +.text-danger { + @include themify($themes) { + color: themed("dangerColor") !important; + } +} + +.text-warning { + @include themify($themes) { + color: themed("warningColor") !important; + } +} + +.text-muted { + @include themify($themes) { + color: themed("mutedColor") !important; + } +} + +.text-default { + @include themify($themes) { + color: themed("textColor") !important; + } +} + +.text-center { + text-align: center; +} + +.no-margin { + margin: 0 !important; +} + +.font-weight-semibold { + font-weight: 600; +} + +p.lead { + font-size: $font-size-large; + margin-bottom: 20px; + font-weight: normal; +} + +.monospaced { + font-family: $font-family-monospace; +} + +.show-whitespace { + white-space: pre-wrap; +} + +.font-weight-bold { + font-weight: bold; +} + +.sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + border: 0 !important; +} + +.totp { + .totp-code { + font-family: $font-family-monospace; + font-size: 1.1em; + } + + .totp-countdown { + margin: 3px 3px 0 0; + display: block; + user-select: none; + + .totp-sec { + font-size: 0.85em; + position: absolute; + line-height: 32px; + width: 32px; + text-align: center; + } + + svg { + width: 32px; + height: 32px; + transform: rotate(-90deg); + } + + .totp-circle { + fill: none; + + @include themify($themes) { + stroke: themed("totpStrokeColor"); + } + + &.inner { + stroke-width: 3; + stroke-dasharray: 78.6; + stroke-dashoffset: 0; + } + + &.outer { + stroke-width: 2; + stroke-dasharray: 88; + stroke-dashoffset: 0; + } + } + } + + &.low { + .totp-sec, + .totp-code { + @include themify($themes) { + color: themed("dangerColor"); + } + } + + .totp-circle { + @include themify($themes) { + stroke: themed("dangerColor"); + } + } + } +} + +.modal-title { + margin: 0 10px 5px 10px; + text-transform: uppercase; + display: flex; + + @include themify($themes) { + color: themed("headingColor"); + } +} + +.generated-block { + font-size: $font-size-large; + font-family: $font-family-monospace; + min-height: 50px; + display: flex; + align-items: center; + justify-content: center; + + .modal-body & { + margin: 10px; + } + + .generated-wrapper { + text-align: left; + width: 100%; + } + + .action-buttons { + display: flex; + align-self: center; + + button { + margin-left: 10px; + } + } +} + +.generated-wrapper { + word-break: break-all; + white-space: pre-wrap; + min-width: 0; +} + +.password-number { + @include themify($themes) { + color: themed("passwordNumberColor"); + } +} + +.password-special { + @include themify($themes) { + color: themed("passwordSpecialColor"); + } +} + +#duo-frame { + background: url("../images/loading.svg") 0 0 no-repeat; + height: 330px; + margin: 0 -150px 15px -150px; + + iframe { + width: 100%; + height: 100%; + border: none; + } +} + +#web-authn-frame { + background: url("../images/loading.svg") 0 0 no-repeat; + height: 250px; + margin: 0 0 15px 0; + + iframe { + width: 100%; + height: 100%; + border: none; + } +} + +#hcaptcha_iframe { + width: 100%; + border: none; + transition: height 0.25s linear; +} + +form, +.form { + .form-group { + margin-bottom: 10px; + + &:last-child { + margin-bottom: 0; + } + + label { + display: inline-block; + margin-bottom: 2px; + } + + input, + select, + textarea { + border: 1px solid #000000; + border-radius: $border-radius; + display: block; + + @include themify($themes) { + border-color: themed("inputBorderColor"); + } + } + + input[type="text"], + input[type="number"] { + padding: 5px; + width: 100%; + } + } + + .checkbox { + position: relative; + display: block; + padding-left: 18px; + + label { + margin-bottom: 0; + } + + input[type="checkbox"] { + position: absolute; + margin-top: 4px; + margin-left: -18px; + } + } + + .radio { + position: relative; + display: block; + padding-left: 18px; + margin-top: 4px; + + &.radio-mt-2 { + margin-top: 2px; + } + + label { + margin-bottom: 0; + } + + input[type="radio"] { + position: absolute; + margin-top: 4px; + margin-left: -18px; + } + } + + .help-block { + margin-top: 3px; + display: block; + + @include themify($themes) { + color: themed("mutedColor"); + } + } +} + +app-root > #loading, +.loading { + display: flex; + text-align: center; + justify-content: center; + align-items: center; + height: 100%; + width: 100%; + color: $text-muted; + + @include themify($themes) { + color: themed("mutedColor"); + } +} + +.logo-image { + @include themify($themes) { + content: url("../images/logo-" + themed("logoSuffix") + "@2x.png"); + } +} + +[hidden] { + display: none !important; +} + +.draggable { + cursor: move; +} + +.callout { + padding: 10px; + margin-bottom: 10px; + border: 1px solid #000000; + border-left-width: 5px; + border-radius: 3px; + @include themify($themes) { + border-color: themed("calloutBorderColor"); + background-color: themed("calloutBackgroundColor"); + } + + .callout-heading { + margin-top: 0; + } + + h3.callout-heading { + font-weight: bold; + text-transform: uppercase; + } + + &.callout-primary { + @include themify($themes) { + border-left-color: themed("primaryColor"); + } + + .callout-heading { + @include themify($themes) { + color: themed("primaryColor"); + } + } + } + + &.callout-info { + @include themify($themes) { + border-left-color: themed("infoColor"); + } + + .callout-heading { + @include themify($themes) { + color: themed("infoColor"); + } + } + } + + &.callout-danger { + @include themify($themes) { + border-left-color: themed("dangerColor"); + } + + .callout-heading { + @include themify($themes) { + color: themed("dangerColor"); + } + } + } + + &.callout-success { + @include themify($themes) { + border-left-color: themed("successColor"); + } + + .callout-heading { + @include themify($themes) { + color: themed("successColor"); + } + } + } + + &.callout-warning { + @include themify($themes) { + border-left-color: themed("warningColor"); + } + + .callout-heading { + @include themify($themes) { + color: themed("warningColor"); + } + } + } + + ul { + padding-left: 40px; + margin: 0; + } +} + +.password-reprompt { + text-align: left; + margin-top: 15px; +} + +.set-pin-modal { + .box { + margin-bottom: 15px; + } +} + +.rounded-circle { + border-radius: 50% !important; +} diff --git a/apps/desktop/src/scss/modal.scss b/apps/desktop/src/scss/modal.scss new file mode 100644 index 0000000000..1d86b1e880 --- /dev/null +++ b/apps/desktop/src/scss/modal.scss @@ -0,0 +1,356 @@ +@import "variables.scss"; + +$white: white; +$black: black; +$line-height-base: 14px; +$border-radius-lg: $border-radius; + +// ref: https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss + +$grid-breakpoints: ( + xs: 0, + sm: 576px, + md: 768px, + lg: 992px, + xl: 1200px, +) !default; + +$zindex-modal-backdrop: 1040 !default; +$zindex-modal: 1050 !default; + +// Padding applied to the modal body +$modal-inner-padding: 10px !default; + +$modal-dialog-margin: 0.5rem !default; +$modal-dialog-margin-y-sm-up: 1.75rem !default; + +$modal-title-line-height: $line-height-base !default; + +//$modal-content-bg: $background-color-alt !default; +$modal-content-border-color: rgba($black, 0.2) !default; +$modal-content-border-width: 1px !default; +$modal-content-box-shadow-xs: none; +$modal-content-box-shadow-sm-up: none; + +$modal-backdrop-bg: $black !default; +$modal-backdrop-opacity: 0.5 !default; +$modal-header-border-color: $border-color-dark !default; +$modal-footer-border-color: $modal-header-border-color !default; +$modal-header-border-width: $modal-content-border-width !default; +$modal-footer-border-width: $modal-header-border-width !default; +$modal-header-padding: 12px !default; + +$modal-lg: 800px !default; +$modal-md: 500px !default; +$modal-sm: 300px !default; + +$modal-transition: transform 0.3s ease-out !default; + +$close-font-size: $font-size-base * 1.5 !default; +$close-font-weight: bold !default; +$close-color: $black !default; +$close-text-shadow: 0 1px 0 $white !default; + +// ref: https://github.com/twbs/bootstrap/blob/v4-dev/scss/mixins/_breakpoints.scss + +@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) { + $min: breakpoint-min($name, $breakpoints); + + @if $min { + @media (min-width: $min) { + @content; + } + } @else { + @content; + } +} + +@function breakpoint-min($name, $breakpoints: $grid-breakpoints) { + $min: map-get($breakpoints, $name); + @return if($min != 0, $min, null); +} + +// Custom Added CSS animations + +@keyframes modalshow { + 0% { + opacity: 0; + transform: translate(0, -25%); + } + + 100% { + opacity: 1; + transform: translate(0, 0); + } +} + +@keyframes backdropshow { + 0% { + opacity: 0; + } + + 100% { + opacity: $modal-backdrop-opacity; + } +} + +// ref: https://github.com/twbs/bootstrap/blob/v4-dev/scss/_modal.scss + +// .modal-open - body class for killing the scroll +// .modal - container to scroll within +// .modal-dialog - positioning shell for the actual modal +// .modal-content - actual modal w/ bg and corners and stuff + +// Kill the scroll on the body +.modal-open { + overflow: hidden; +} + +// Container that the modal scrolls within +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: $zindex-modal; + //display: none; + overflow: hidden; + // Prevent Chrome on Windows from adding a focus outline. For details, see + // https://github.com/twbs/bootstrap/pull/10951. + outline: 0; + // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a + // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342 + // See also https://github.com/twbs/bootstrap/issues/17695 + .modal-open & { + overflow-x: hidden; + overflow-y: auto; + } +} + +// Shell div to position the modal with bottom padding +.modal-dialog { + position: relative; + width: auto; + margin: $modal-dialog-margin; + // allow clicks to pass through for custom click handling to close modal + pointer-events: none; + // When fading in the modal, animate it to slide down + .modal.fade & { + //@include transition($modal-transition); + //transform: translate(0, -25%); + animation: modalshow 0.3s ease-in; + } + //.modal.show & { + // transform: translate(0, 0); + //} + transform: translate(0, 0); +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - (#{$modal-dialog-margin} * 2)); +} + +// Actual modal +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog` + // counteract the pointer-events: none; in the .modal-dialog + pointer-events: auto; + //background-color: $modal-content-bg; + background-clip: padding-box; + border: $modal-content-border-width solid $modal-content-border-color; + //@include border-radius($border-radius-lg); + //@include box-shadow($modal-content-box-shadow-xs); + border-radius: $border-radius-lg; + box-shadow: $modal-content-box-shadow-xs; + // Remove focus outline from opened modal + outline: 0; + + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + } +} + +// Modal background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: $zindex-modal-backdrop; + background-color: $modal-backdrop-bg; + // Fade for backdrop + &.fade { + //opacity: 0; + animation: backdropshow 0.1s ease-in; + } + //&.show { + // opacity: $modal-backdrop-opacity; + //} + opacity: $modal-backdrop-opacity; +} + +// Modal header +// Top section of the modal w/ title and dismiss +.modal-header { + display: flex; + align-items: flex-start; // so the close btn always stays on the upper right corner + justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends + padding: $modal-header-padding $modal-inner-padding; + border-bottom: $modal-header-border-width solid $modal-header-border-color; + //@include border-top-radius($border-radius-lg); + + @include themify($themes) { + border-bottom-color: themed("borderColor"); + } + + .close { + padding: $modal-header-padding $modal-inner-padding; + // auto on the left force icon to the right even when there is no .modal-title + margin: (-$modal-header-padding) (-$modal-inner-padding) (-$modal-header-padding) auto; + } + + h5 { + font-size: $font-size-base; + font-weight: bold; + display: flex; + align-items: center; + + .bwi { + margin-right: 5px; + } + } +} + +// Title text within header +.modal-title { + margin-bottom: 0; + line-height: $modal-title-line-height; +} + +// Modal body +// Where all modal content resides (sibling of .modal-header and .modal-footer) +.modal-body { + position: relative; + // Enable `flex-grow: 1` so that the body take up as much space as possible + // when should there be a fixed height on `.modal-dialog`. + flex: 1 1 auto; + padding: $modal-inner-padding; +} + +// Footer (for actions) +.modal-footer { + display: flex; + align-items: center; // vertically center + //justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items + padding: $modal-inner-padding; + border-top: $modal-footer-border-width solid $modal-footer-border-color; + + @include themify($themes) { + border-top-color: themed("borderColor"); + } + + // Easily place margin between footer elements + button { + margin-right: 10px; + + &:last-child { + margin-right: 0; + } + } + + .right { + margin-left: auto; + display: flex; + } +} + +// Measure scrollbar width for padding body during modal show/hide +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +// Scale up the modal +@include media-breakpoint-up(sm) { + // Automatically set modal's width for larger viewports + .modal-dialog { + max-width: $modal-md; + margin: $modal-dialog-margin-y-sm-up auto; + } + + .modal-dialog-centered { + min-height: calc(100% - (#{$modal-dialog-margin-y-sm-up} * 2)); + } + + .modal-content { + //@include box-shadow($modal-content-box-shadow-sm-up); + box-shadow: $modal-content-box-shadow-sm-up; + } + + .modal-sm { + max-width: $modal-sm; + } +} + +@include media-breakpoint-up(lg) { + .modal-lg { + max-width: $modal-lg; + } +} + +// ref: https://github.com/twbs/bootstrap/blob/v4-dev/scss/_close.scss + +.close { + float: right; + font-size: $close-font-size; + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + opacity: 0.5; + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + opacity: 0.75; + } + // Opinionated: add "hand" cursor to non-disabled .close elements + &:not(:disabled):not(.disabled) { + cursor: pointer; + } +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + +// stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; +} +// stylelint-enable + +// box + +.modal-content .box { + margin-top: 20px; + + &:first-child { + margin-top: 0; + } +} diff --git a/apps/desktop/src/scss/pages.scss b/apps/desktop/src/scss/pages.scss new file mode 100644 index 0000000000..cb91290e44 --- /dev/null +++ b/apps/desktop/src/scss/pages.scss @@ -0,0 +1,245 @@ +@import "variables.scss"; + +#login-page, +#lock-page, +#sso-page, +#set-password-page, +#remove-password-page { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + + @media (min-height: 500px) { + height: calc(100%); + } + + @media (min-height: 800px) { + height: calc(100%); + } + + img { + margin: 0 auto 15px; + width: 284px; + display: block; + } +} + +#register-page, +#hint-page, +#two-factor-page, +#update-temp-password-page, +#remove-password-page { + padding-top: 20px; + + .content { + margin: 0 auto; + } + + img { + margin-bottom: 10px; + max-width: 100%; + height: auto; + display: block; + border-radius: $border-radius; + } +} + +#login-page, +#register-page, +#hint-page, +#two-factor-page, +#lock-page, +#update-temp-password-page { + .content { + width: 300px; + transition: width 0.25s linear; + + p { + text-align: center; + } + + p.lead, + h1 { + font-size: $font-size-large; + text-align: center; + margin-bottom: 20px; + font-weight: normal; + } + + .box { + margin-bottom: 20px; + + &.last { + margin-bottom: 15px; + } + } + + .buttons { + &:not(.with-rows), + .buttons-row { + display: flex; + margin-bottom: 10px; + } + + &:not(.with-rows), + .buttons-row:last-child { + margin-bottom: 20px; + } + + button { + margin-right: 10px; + + &:last-child { + margin-right: 0; + } + } + } + + .sub-options { + text-align: center; + margin-bottom: 20px; + + a { + display: block; + margin-bottom: 10px; + + &:last-child { + margin-bottom: 0; + } + } + } + + a.settings-icon { + position: absolute; + top: 10px; + left: 10px; + + @include themify($themes) { + color: themed("mutedColor"); + } + + span { + visibility: hidden; + } + + &:hover, + &:focus { + text-decoration: none; + + @include themify($themes) { + color: themed("primaryColor"); + } + + span { + visibility: visible; + } + } + } + } +} + +#sso-page { + .content { + width: 300px; + + .box { + margin-top: 30px; + margin-bottom: 30px; + text-align: center; + } + } +} + +#set-password-page, +#remove-password-page { + .content { + width: 500px; + + p { + text-align: center; + } + + p.lead, + h1 { + font-size: $font-size-large; + text-align: center; + margin-bottom: 20px; + font-weight: normal; + } + + .buttons { + &:not(.with-rows), + .buttons-row { + display: flex; + margin-bottom: 10px; + } + + &:not(.with-rows), + .buttons-row:last-child { + margin-bottom: 20px; + } + + button { + margin-right: 10px; + + &:last-child { + margin-right: 0; + } + } + } + + .box { + margin-bottom: 15px; + + &.last { + margin-bottom: 20px; + } + } + + .box-content { + margin-bottom: 10px; + } + } +} + +#register-page, +#update-temp-password-page { + .content { + width: 400px; + } +} + +#remove-password-page { + .content > p { + margin-bottom: 20px; + } +} + +#login-page { + flex-direction: column; + + .login-header { + align-self: flex-start; + padding: 1em; + font-size: 1.2em; + .environment-urls-settings-icon { + @include themify($themes) { + color: themed("mutedColor"); + } + + span { + visibility: hidden; + } + + &:hover, + &:focus { + text-decoration: none; + + @include themify($themes) { + color: themed("primaryColor"); + } + } + } + } +} diff --git a/apps/desktop/src/scss/plugins.scss b/apps/desktop/src/scss/plugins.scss new file mode 100644 index 0000000000..1bb171bb80 --- /dev/null +++ b/apps/desktop/src/scss/plugins.scss @@ -0,0 +1,203 @@ +@import "~ngx-toastr/toastr"; +@import "~sweetalert2/src/sweetalert2.scss"; + +@import "variables.scss"; + +.toast-container { + .toast-close-button { + font-size: 18px; + margin-right: 4px; + } + + .ngx-toastr { + align-items: center; + background-image: none !important; + border-radius: $border-radius; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.35); + display: flex; + padding: 15px; + + .toast-close-button { + position: absolute; + right: 5px; + top: 0; + } + + &:hover { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.6); + } + + .icon i::before { + float: left; + font-style: normal; + font-family: $icomoon-font-family; + font-size: 25px; + line-height: 20px; + padding-right: 15px; + } + + .toast-message { + p { + margin-bottom: 0.5rem; + + &:last-child { + margin-bottom: 0; + } + } + } + + &.toast-danger, + &.toast-error { + @include themify($themes) { + background-color: themed("dangerColor"); + } + + .icon i::before { + content: map_get($icons, "error"); + } + } + + &.toast-warning { + @include themify($themes) { + background-color: themed("warningColor"); + } + + .icon i::before { + content: map_get($icons, "exclamation-triangle"); + } + } + + &.toast-info { + @include themify($themes) { + background-color: themed("infoColor"); + } + + .icon i:before { + content: map_get($icons, "info-circle"); + } + } + + &.toast-success { + @include themify($themes) { + background-color: themed("successColor"); + } + + .icon i:before { + content: map_get($icons, "check"); + } + } + } +} + +// SweetAlert2 + +.swal2-popup { + padding: 15px; + border-radius: $border-radius; + width: 34em; + + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + color: themed("textColor"); + } + + .swal2-icon { + margin: 0 auto; + width: auto; + height: auto; + border: none; + } + + .swal2-content { + margin: 0; + font-size: $font-size-base; + @include themify($themes) { + color: themed("textColor"); + } + + label.checkbox { + margin-top: 10px; + display: flex; + text-align: left; + align-items: top; + + input { + margin: 3px 5px 0 1px; + } + } + + .swal2-input, + .swal2-textarea { + border: 1px solid #000000; + border-radius: $border-radius; + margin-bottom: 0; + box-shadow: none; + // Inherit theme font-size + font-size: inherit; + + // Sweetalert 1 did not have box-shadow + &:focus { + box-shadow: none; + } + @include themify($themes) { + border-color: themed("inputBorderColor"); + color: themed("textColor"); + background-color: themed("inputBackgroundColor"); + } + &::-webkit-input-placeholder { + @include themify($themes) { + color: themed("inputPlaceholderColor"); + } + } + } + } + + i.swal-custom-icon { + display: block; + margin: 0 auto; + font-size: 35px; + } + + .swal2-title { + padding: 10px 0 15px; + margin: 0; + font-size: $font-size-large; + + @include themify($themes) { + color: themed("textColor"); + } + } + + .swal2-text { + text-align: left; // sweetalert1 behaviour + font-size: $font-size-base; + + @include themify($themes) { + color: themed("textColor"); + } + } + + > .swal2-text:first-child { + margin-top: 20px; + } + + .swal2-actions { + margin: 20px auto 0; + justify-content: flex-start; + flex-direction: row-reverse; + + button { + margin-left: 10px; + @extend .btn; + + &.swal2-confirm { + @extend .btn, .primary; + font-weight: bold; + } + } + } + + .swal2-validation-message { + margin-top: 20px; + } +} diff --git a/apps/desktop/src/scss/styles.scss b/apps/desktop/src/scss/styles.scss new file mode 100644 index 0000000000..a8705342e2 --- /dev/null +++ b/apps/desktop/src/scss/styles.scss @@ -0,0 +1,17 @@ +@import "../../jslib/angular/src/scss/webfonts.css"; +@import "../../jslib/angular/src/scss/bwicons/styles/style.scss"; +@import "~@angular/cdk/overlay-prebuilt.css"; +@import "variables.scss"; +@import "base.scss"; +@import "grid.scss"; +@import "pages.scss"; +@import "vault.scss"; +@import "list.scss"; +@import "box.scss"; +@import "buttons.scss"; +@import "misc.scss"; +@import "modal.scss"; +@import "plugins.scss"; +@import "environment.scss"; +@import "header.scss"; +@import "../../jslib/angular/src/scss/icons.scss"; diff --git a/apps/desktop/src/scss/variables.scss b/apps/desktop/src/scss/variables.scss new file mode 100644 index 0000000000..8e95667c7d --- /dev/null +++ b/apps/desktop/src/scss/variables.scss @@ -0,0 +1,226 @@ +@import "~nord/src/sass/nord.scss"; + +$dark-icon-themes: "theme_dark", "theme_nord"; + +$font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; +$font-size-base: 14px; +$font-size-large: 18px; +$font-size-small: 12px; +$text-color: #000000; +$border-color: #f0f0f0; +$border-color-dark: #ddd; +$list-item-hover: #fbfbfb; +$list-icon-color: #c7c7cd; +$border-radius: 3px; +$line-height-base: 1.42857143; + +$gray: #555; +$gray-light: #777; +$text-muted: $gray-light; + +$brand-primary: #175ddc; +$brand-danger: #dd4b39; +$brand-success: #00a65a; +$brand-info: #555555; +$brand-warning: #bf7e16; +$brand-primary-accent: #1252a3; + +$background-color: white; +$background-color-alt: #f9f9f9; +$background-color-alt2: #ededed; + +$box-background-color: $background-color; +$box-background-hover-color: $list-item-hover; +$box-border-color: $border-color; + +$button-border-color: darken($border-color-dark, 12%); +$button-background-color: white; +$button-color: lighten($text-color, 40%); +$button-color-primary: darken($brand-primary, 8%); +$button-color-danger: darken($brand-danger, 10%); + +$themes: ( + light: ( + textColor: $text-color, + borderColor: $border-color-dark, + backgroundColor: $background-color, + backgroundColorAlt: $background-color-alt, + backgroundColorAlt2: $background-color-alt2, + scrollbarColor: rgba(100, 100, 100, 0.2), + scrollbarHoverColor: rgba(100, 100, 100, 0.4), + boxBackgroundColor: $box-background-color, + boxBackgroundHoverColor: $box-background-hover-color, + boxBorderColor: $box-border-color, + headerBackgroundColor: $brand-primary, + headerBorderColor: darken($brand-primary, 7%), + headerInputBackgroundColor: darken($brand-primary, 8%), + headerInputBackgroundFocusColor: darken($brand-primary, 10%), + headerInputColor: #ffffff, + headerInputPlaceholderColor: lighten($brand-primary, 35%), + listItemBackgroundColor: $background-color, + listItemBackgroundHoverColor: $list-item-hover, + listItemBorderColor: $border-color, + groupingsActiveColor: darken($background-color-alt, 5%), + disabledIconColor: $list-icon-color, + headingColor: $gray-light, + headingButtonColor: lighten($gray-light, 30%), + headingButtonHoverColor: $gray-light, + labelColor: $gray-light, + mutedColor: $text-muted, + totpStrokeColor: $brand-primary, + boxRowButtonColor: $brand-primary, + boxRowButtonHoverColor: darken($brand-primary, 10%), + inputBorderColor: darken($border-color-dark, 7%), + inputBackgroundColor: #ffffff, + inputPlaceholderColor: lighten($gray-light, 35%), + buttonBackgroundColor: $button-background-color, + buttonBorderColor: $button-border-color, + buttonColor: $button-color, + buttonPrimaryColor: $button-color-primary, + buttonDangerColor: $button-color-danger, + primaryColor: $brand-primary, + primaryAccentColor: $brand-primary-accent, + dangerColor: $brand-danger, + successColor: $brand-success, + infoColor: $brand-info, + warningColor: $brand-warning, + logoSuffix: "dark", + passwordNumberColor: #007fde, + passwordSpecialColor: #c40800, + calloutBorderColor: $border-color-dark, + calloutBackgroundColor: $background-color, + accountSwitcherBackgroundColor: $background-color, + accountSwitcherTextColor: #ffffff, + svgSuffix: "-light.svg", + ), + dark: ( + textColor: #ffffff, + borderColor: #2f2f2f, + backgroundColor: #363636, + backgroundColorAlt: #3d3d3d, + backgroundColorAlt2: #222222, + scrollbarColor: #4d4d4d, + scrollbarHoverColor: #5f5f5f, + boxBackgroundColor: #363636, + boxBackgroundHoverColor: #3f3f3f, + boxBorderColor: #2f2f2f, + headerBackgroundColor: #363636, + headerBorderColor: #272727, + headerInputBackgroundColor: #222222, + headerInputBackgroundFocusColor: #1d1d1d, + headerInputColor: #ffffff, + headerInputPlaceholderColor: #707070, + listItemBackgroundColor: #363636, + listItemBackgroundHoverColor: #3c3c3c, + listItemBorderColor: #2f2f2f, + groupingsActiveColor: #292929, + disabledIconColor: #c7c7cd, + headingColor: #a3a3a3, + headingButtonColor: #a3a3a3, + headingButtonHoverColor: #ffffff, + labelColor: #a3a3a3, + mutedColor: #a3a3a3, + totpStrokeColor: #cacaca, + boxRowButtonColor: #cacaca, + boxRowButtonHoverColor: #ffffff, + inputBorderColor: #222222, + inputBackgroundColor: #363636, + inputPlaceholderColor: #707070, + buttonBackgroundColor: #363636, + buttonBorderColor: #1f1f1f, + buttonColor: #e0e0e0, + buttonPrimaryColor: #46ace7, + buttonDangerColor: #ff3e24, + primaryColor: #52bdfb, + primaryAccentColor: #3ea1da, + dangerColor: #ff3e24, + successColor: $brand-success, + infoColor: $brand-info, + warningColor: $brand-warning, + logoSuffix: "white", + passwordNumberColor: #52bdfb, + passwordSpecialColor: #ff7c70, + calloutBorderColor: #2f2f2f, + calloutBackgroundColor: #363636, + accountSwitcherBackgroundColor: #2f2f2f, + accountSwitcherTextColor: #ffffff, + svgSuffix: "-dark.svg", + ), + nord: ( + textColor: $nord5, + borderColor: $nord0, + backgroundColor: $nord2, + backgroundColorAlt: $nord1, + backgroundColorAlt2: $nord1, + scrollbarColor: $nord4, + scrollbarHoverColor: $nord6, + boxBackgroundColor: $nord2, + boxBackgroundHoverColor: $nord3, + boxBorderColor: $nord1, + headerBackgroundColor: $nord2, + headerBorderColor: $nord0, + headerInputBackgroundColor: $nord6, + headerInputBackgroundFocusColor: $nord5, + headerInputColor: $nord2, + headerInputPlaceholderColor: $nord3, + listItemBackgroundColor: $nord2, + listItemBackgroundHoverColor: $nord3, + listItemBorderColor: $nord1, + groupingsActiveColor: $nord3, + disabledIconColor: $nord5, + headingColor: $nord4, + headingButtonColor: $nord5, + headingButtonHoverColor: $nord6, + labelColor: $nord4, + mutedColor: $nord4, + totpStrokeColor: $nord4, + boxRowButtonColor: $nord4, + boxRowButtonHoverColor: $nord6, + inputBorderColor: $nord0, + inputBackgroundColor: $nord2, + inputPlaceholderColor: lighten($nord3, 20%), + buttonBackgroundColor: $nord3, + buttonBorderColor: $nord0, + buttonColor: $nord5, + buttonPrimaryColor: $nord8, + buttonDangerColor: $nord11, + primaryColor: $nord9, + primaryAccentColor: $nord8, + dangerColor: $nord11, + successColor: $nord14, + infoColor: $nord9, + warningColor: $nord12, + logoSuffix: "white", + passwordNumberColor: $nord8, + passwordSpecialColor: $nord12, + calloutBorderColor: $nord1, + calloutBackgroundColor: $nord2, + accountSwitcherBackgroundColor: $nord0, + accountSwitcherTextColor: $nord5, + svgSuffix: "-dark.svg", + ), +); + +@mixin themify($themes: $themes) { + @each $theme, $map in $themes { + html.theme_#{$theme} & { + $theme-map: () !global; + @each $key, $submap in $map { + $value: map-get(map-get($themes, $theme), "#{$key}"); + $theme-map: map-merge( + $theme-map, + ( + $key: $value, + ) + ) !global; + } + @content; + $theme-map: null !global; + } + } +} + +@function themed($key) { + @return map-get($theme-map, $key); +} diff --git a/apps/desktop/src/scss/vault.scss b/apps/desktop/src/scss/vault.scss new file mode 100644 index 0000000000..dad10af27a --- /dev/null +++ b/apps/desktop/src/scss/vault.scss @@ -0,0 +1,459 @@ +@import "variables.scss"; + +app-root { + display: flex; + flex-flow: column; + height: 100%; +} + +#container { + height: 100%; + min-height: 0; +} + +.vault { + height: 100%; + display: flex; + + > .groupings, + > .items, + > .details, + > .logo { + display: flex; + flex-direction: column; + + .inner-content { + padding: 10px 15px; + } + } + + > .items { + order: 2; + } + + > .details { + order: 3; + } + + > .logo { + order: 4; + } + + > .groupings { + order: 1; + width: 22%; + min-width: 175px; + max-width: 600px; + border-right: 1px solid #000000; + + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + border-right-color: themed("borderColor"); + } + + .content { + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: space-between; + + .footer { + padding: 0; + } + + .inner-content { + padding-bottom: 0; + padding-right: 5px; + user-select: none; + + > ul, + > div > ul { + margin: 0 0 15px 0; + } + } + } + + h2 { + text-transform: uppercase; + font-size: $font-size-base; + font-weight: normal; + margin-bottom: 5px; + + @include themify($themes) { + color: themed("headingColor"); + } + } + + .heading { + display: flex; + + button { + margin-left: auto; + background: none; + border: none; + @include themify($themes) { + color: themed("headingButtonColor"); + } + + &:hover, + &:focus { + cursor: pointer; + + @include themify($themes) { + color: themed("headingButtonHoverColor"); + } + } + } + } + + ul:not(.bwi-ul) { + li { + margin: 0; + padding: 0; + list-style: none; + } + } + + ul.bwi-ul { + li { + word-break: break-all; + + .bwi-li { + top: 8px; + width: 1.1em; + } + } + } + + // Nested indentions + ul.bwi-ul { + // Level 1 + li { + > button { + padding-left: 12px; + } + + .bwi-li { + left: -4px; + } + + &.active > button .bwi-li { + left: 11px; + } + } + + // Level 2 + ul li { + > button { + padding-left: 23px; + } + + .bwi-li { + left: 7px; + } + + &.active > button .bwi-li { + left: 22px; + } + } + + // Level 3 + ul ul li { + > button { + padding-left: 34px; + } + + .bwi-li { + left: 18px; + } + + &.active > button .bwi-li { + left: 33px; + } + } + + // Level 4 + ul ul ul li { + > button { + padding-left: 45px; + } + + .bwi-li { + left: 29px; + } + + &.active > button .bwi-li { + left: 44px; + } + } + + // Level 5 + ul ul ul ul li { + > button { + padding-left: 56px; + } + + .bwi-li { + left: 40px; + } + + &.active > button .bwi-li { + left: 55px; + } + } + + // Level 6 + ul ul ul ul ul li { + > button { + padding-left: 67px; + } + + .bwi-li { + left: 51px; + } + + &.active > button .bwi-li { + left: 66px; + } + } + + // Level 7 + ul ul ul ul ul ul li { + > button { + padding-left: 78px; + } + + .bwi-li { + left: 62px; + } + + &.active > button .bwi-li { + left: 77px; + } + } + } + + ul { + padding: 0; + margin: 0; + + li { + button { + padding: 5px 0; + display: flex; + align-items: center; + width: 100%; + + @include themify($themes) { + color: themed("textColor"); + } + + span { + visibility: hidden; + margin-left: auto; + + @include themify($themes) { + color: themed("headingButtonColor"); + } + + &:hover, + &:focus { + @include themify($themes) { + color: themed("headingButtonHoverColor"); + } + } + } + + &:hover, + &:focus { + span { + visibility: visible; + } + } + } + + &.active { + margin-left: -15px; + margin-right: -5px; + padding-left: 15px; + padding-right: 5px; + + @include themify($themes) { + background-color: themed("groupingsActiveColor"); + } + + ul { + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + } + + margin-left: -15px; + margin-right: -5px; + padding-left: 15px; + padding-right: 5px; + } + } + } + } + } + + > .items { + width: 28%; + min-width: 200px; + max-width: 350px; + border-right: 1px solid #000000; + + @include themify($themes) { + background-color: themed("backgroundColor"); + border-right-color: themed("borderColor"); + } + + .no-items { + display: flex; + height: 100%; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + padding: 0 10px; + + .no-items-image { + @include themify($themes) { + content: url("../images/search-desktop" + themed("svgSuffix")); + } + } + + .bwi { + margin-bottom: 10px; + + @include themify($themes) { + color: themed("disabledIconColor"); + } + } + } + } + + > .details { + flex: 1; + min-width: 0; + + @include themify($themes) { + background-color: themed("backgroundColorAlt2"); + } + + .inner-content { + min-width: 400px; + } + + .box { + max-width: 550px; + margin: 30px auto 0 auto; + + &:first-child { + margin-top: 10px; + } + + &:last-child { + margin-bottom: 30px; + } + } + + > form { + display: flex; + flex-direction: column; + height: 100%; + } + + .footer { + button { + margin-right: 10px; + + &:last-child { + margin-right: 0; + } + } + } + } + + > .logo { + flex: 1; + min-width: 0; + + .content { + overflow-y: hidden; + overflow-x: auto; + } + + .inner-content { + min-width: 320px; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + img { + width: 284px; + opacity: 0.3; + transition: all 1s ease-in-out; + + &:hover { + opacity: 1; + } + } + } + + .content { + flex: 1 1 auto; + position: relative; + overflow: auto; + height: 100%; + } + + .footer { + height: 55px; + flex: 0 0 auto; + border-top: 1px solid #000000; + display: flex; + align-items: center; + padding: 0 15px; + + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + border-top-color: themed("borderColor"); + } + + .right { + margin-left: auto; + display: flex; + } + } + + .nav { + height: 100%; + width: 100%; + display: flex; + .btn { + width: 100%; + font-size: $font-size-base * 0.8; + flex: 1; + border: 0; + border-radius: 0; + padding-bottom: 4px; + + &:not(.active) { + @include themify($themes) { + background-color: themed("backgroundColorAlt"); + } + } + + i { + font-size: $font-size-base * 1.5; + display: block; + margin-bottom: 2px; + text-align: center; + } + } + } +} diff --git a/apps/desktop/src/services/i18n.service.ts b/apps/desktop/src/services/i18n.service.ts new file mode 100644 index 0000000000..899147a075 --- /dev/null +++ b/apps/desktop/src/services/i18n.service.ts @@ -0,0 +1,76 @@ +import * as fs from "fs"; +import * as path from "path"; + +import { I18nService as BaseI18nService } from "jslib-common/services/i18n.service"; + +export class I18nService extends BaseI18nService { + constructor(systemLanguage: string, localesDirectory: string) { + super(systemLanguage, localesDirectory, (formattedLocale: string) => { + const filePath = path.join( + __dirname, + this.localesDirectory + "/" + formattedLocale + "/messages.json" + ); + const localesJson = fs.readFileSync(filePath, "utf8"); + const locales = JSON.parse(localesJson.replace(/^\uFEFF/, "")); // strip the BOM + return Promise.resolve(locales); + }); + + // Please leave 'en' where it is, as it's our fallback language in case no translation can be found + this.supportedTranslationLocales = [ + "en", + "af", + "az", + "be", + "bg", + "bn", + "bs", + "ca", + "cs", + "da", + "de", + "el", + "en-GB", + "en-IN", + "eo", + "es", + "et", + "fa", + "fi", + "fil", + "fr", + "he", + "hi", + "hr", + "hu", + "id", + "it", + "ja", + "ka", + "km", + "kn", + "ko", + "lv", + "me", + "ml", + "nb", + "nl", + "nn", + "pl", + "pt-BR", + "pt-PT", + "ro", + "ru", + "si", + "sk", + "sl", + "sr", + "sv", + "th", + "tr", + "uk", + "vi", + "zh-CN", + "zh-TW", + ]; + } +} diff --git a/apps/desktop/src/services/loginGuard.service.ts b/apps/desktop/src/services/loginGuard.service.ts new file mode 100644 index 0000000000..4f32bf844d --- /dev/null +++ b/apps/desktop/src/services/loginGuard.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from "@angular/core"; +import { CanActivate } from "@angular/router"; + +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; + +const maxAllowedAccounts = 5; + +@Injectable() +export class LoginGuardService implements CanActivate { + protected homepage = "vault"; + constructor( + private stateService: StateService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService + ) {} + + async canActivate() { + const accounts = this.stateService.accounts.getValue(); + if (accounts != null && Object.keys(accounts).length >= maxAllowedAccounts) { + this.platformUtilsService.showToast("error", null, this.i18nService.t("accountLimitReached")); + return false; + } + + return true; + } +} diff --git a/apps/desktop/src/services/nativeMessaging.service.ts b/apps/desktop/src/services/nativeMessaging.service.ts new file mode 100644 index 0000000000..a1ef710a62 --- /dev/null +++ b/apps/desktop/src/services/nativeMessaging.service.ts @@ -0,0 +1,187 @@ +import { Injectable } from "@angular/core"; +import { ipcRenderer } from "electron"; +import Swal from "sweetalert2"; + +import { CryptoService } from "jslib-common/abstractions/crypto.service"; +import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service"; +import { I18nService } from "jslib-common/abstractions/i18n.service"; +import { LogService } from "jslib-common/abstractions/log.service"; +import { MessagingService } from "jslib-common/abstractions/messaging.service"; +import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { StateService } from "jslib-common/abstractions/state.service"; +import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions"; +import { Utils } from "jslib-common/misc/utils"; +import { EncString } from "jslib-common/models/domain/encString"; +import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey"; + +const MessageValidTimeout = 10 * 1000; +const EncryptionAlgorithm = "sha1"; + +type Message = { + command: string; + + userId?: string; + timestamp?: number; + + publicKey?: string; +}; + +type OuterMessage = { + message: Message | EncString; + appId: string; +}; + +@Injectable() +export class NativeMessagingService { + private sharedSecrets = new Map(); + + constructor( + private cryptoFunctionService: CryptoFunctionService, + private cryptoService: CryptoService, + private platformUtilService: PlatformUtilsService, + private logService: LogService, + private i18nService: I18nService, + private messagingService: MessagingService, + private stateService: StateService + ) {} + + init() { + ipcRenderer.on("nativeMessaging", async (_event: any, message: any) => { + this.messageHandler(message); + }); + } + + private async messageHandler(msg: OuterMessage) { + const appId = msg.appId; + const rawMessage = msg.message; + + // Request to setup secure encryption + if ("command" in rawMessage && rawMessage.command === "setupEncryption") { + const remotePublicKey = Utils.fromB64ToArray(rawMessage.publicKey).buffer; + + // Valudate the UserId to ensure we are logged into the same account. + const userIds = Object.keys(this.stateService.accounts.getValue()); + if (!userIds.includes(rawMessage.userId)) { + ipcRenderer.send("nativeMessagingReply", { command: "wrongUserId", appId: appId }); + return; + } + + if (await this.stateService.getEnableBrowserIntegrationFingerprint()) { + ipcRenderer.send("nativeMessagingReply", { command: "verifyFingerprint", appId: appId }); + + const fingerprint = ( + await this.cryptoService.getFingerprint( + await this.stateService.getUserId(), + remotePublicKey + ) + ).join(" "); + + this.messagingService.send("setFocus"); + + // Await confirmation that fingerprint is correct + const submitted = await Swal.fire({ + titleText: this.i18nService.t("verifyBrowserTitle"), + html: `${this.i18nService.t("verifyBrowserDesc")}

${fingerprint}`, + showCancelButton: true, + cancelButtonText: this.i18nService.t("cancel"), + showConfirmButton: true, + confirmButtonText: this.i18nService.t("approve"), + allowOutsideClick: false, + }); + + if (submitted.value !== true) { + return; + } + } + + this.secureCommunication(remotePublicKey, appId); + return; + } + + if (this.sharedSecrets.get(appId) == null) { + ipcRenderer.send("nativeMessagingReply", { command: "invalidateEncryption", appId: appId }); + return; + } + + const message: Message = JSON.parse( + await this.cryptoService.decryptToUtf8(rawMessage as EncString, this.sharedSecrets.get(appId)) + ); + + // Shared secret is invalidated, force re-authentication + if (message == null) { + ipcRenderer.send("nativeMessagingReply", { command: "invalidateEncryption", appId: appId }); + return; + } + + if (Math.abs(message.timestamp - Date.now()) > MessageValidTimeout) { + this.logService.error("NativeMessage is to old, ignoring."); + return; + } + + switch (message.command) { + case "biometricUnlock": { + if (!this.platformUtilService.supportsBiometric()) { + return this.send({ command: "biometricUnlock", response: "not supported" }, appId); + } + + if (!(await this.stateService.getBiometricUnlock({ userId: message.userId }))) { + this.send({ command: "biometricUnlock", response: "not enabled" }, appId); + + return await Swal.fire({ + title: this.i18nService.t("biometricsNotEnabledTitle"), + text: this.i18nService.t("biometricsNotEnabledDesc"), + showCancelButton: true, + cancelButtonText: this.i18nService.t("cancel"), + showConfirmButton: false, + }); + } + + const key = await this.cryptoService.getKeyFromStorage( + KeySuffixOptions.Biometric, + message.userId + ); + + if (key != null) { + this.send( + { command: "biometricUnlock", response: "unlocked", keyB64: key.keyB64 }, + appId + ); + } else { + this.send({ command: "biometricUnlock", response: "canceled" }, appId); + } + + break; + } + default: + this.logService.error("NativeMessage, got unknown command."); + break; + } + } + + private async send(message: any, appId: string) { + message.timestamp = Date.now(); + + const encrypted = await this.cryptoService.encrypt( + JSON.stringify(message), + this.sharedSecrets.get(appId) + ); + + ipcRenderer.send("nativeMessagingReply", { appId: appId, message: encrypted }); + } + + private async secureCommunication(remotePublicKey: ArrayBuffer, appId: string) { + const secret = await this.cryptoFunctionService.randomBytes(64); + this.sharedSecrets.set(appId, new SymmetricCryptoKey(secret)); + + const encryptedSecret = await this.cryptoFunctionService.rsaEncrypt( + secret, + remotePublicKey, + EncryptionAlgorithm + ); + ipcRenderer.send("nativeMessagingReply", { + appId: appId, + command: "setupEncryption", + sharedSecret: Utils.fromBufferToB64(encryptedSecret), + }); + } +} diff --git a/apps/desktop/src/services/passwordReprompt.service.ts b/apps/desktop/src/services/passwordReprompt.service.ts new file mode 100644 index 0000000000..ad13a4d003 --- /dev/null +++ b/apps/desktop/src/services/passwordReprompt.service.ts @@ -0,0 +1,10 @@ +import { Injectable } from "@angular/core"; + +import { PasswordRepromptService as BasePasswordRepromptService } from "jslib-angular/services/passwordReprompt.service"; + +import { PasswordRepromptComponent } from "../app/components/password-reprompt.component"; + +@Injectable() +export class PasswordRepromptService extends BasePasswordRepromptService { + component = PasswordRepromptComponent; +} diff --git a/apps/desktop/src/services/state.service.ts b/apps/desktop/src/services/state.service.ts new file mode 100644 index 0000000000..465b684d9e --- /dev/null +++ b/apps/desktop/src/services/state.service.ts @@ -0,0 +1,16 @@ +import { StateService as StateServiceAbstraction } from "jslib-common/abstractions/state.service"; +import { GlobalState } from "jslib-common/models/domain/globalState"; +import { StateService as BaseStateService } from "jslib-common/services/state.service"; + +import { Account } from "../models/account"; + +export class StateService + extends BaseStateService + implements StateServiceAbstraction +{ + async addAccount(account: Account) { + // Apply desktop overides to default account values + account = new Account(account); + await super.addAccount(account); + } +} diff --git a/apps/desktop/stores/apple/screenshots/macos01.png b/apps/desktop/stores/apple/screenshots/macos01.png new file mode 100644 index 0000000000..4a338f011e Binary files /dev/null and b/apps/desktop/stores/apple/screenshots/macos01.png differ diff --git a/apps/desktop/stores/apple/screenshots/macos02.png b/apps/desktop/stores/apple/screenshots/macos02.png new file mode 100644 index 0000000000..4652dbfe47 Binary files /dev/null and b/apps/desktop/stores/apple/screenshots/macos02.png differ diff --git a/apps/desktop/stores/apple/screenshots/macos03.png b/apps/desktop/stores/apple/screenshots/macos03.png new file mode 100644 index 0000000000..ce832f4470 Binary files /dev/null and b/apps/desktop/stores/apple/screenshots/macos03.png differ diff --git a/apps/desktop/stores/apple/screenshots/macos04.png b/apps/desktop/stores/apple/screenshots/macos04.png new file mode 100644 index 0000000000..0104cd6f4d Binary files /dev/null and b/apps/desktop/stores/apple/screenshots/macos04.png differ diff --git a/apps/desktop/stores/apple/screenshots/macos05.png b/apps/desktop/stores/apple/screenshots/macos05.png new file mode 100644 index 0000000000..b6c05bb6d2 Binary files /dev/null and b/apps/desktop/stores/apple/screenshots/macos05.png differ diff --git a/apps/desktop/stores/apple/screenshots/macos06.png b/apps/desktop/stores/apple/screenshots/macos06.png new file mode 100644 index 0000000000..6d045c45ad Binary files /dev/null and b/apps/desktop/stores/apple/screenshots/macos06.png differ diff --git a/apps/desktop/stores/chocolatey/bitwarden.nuspec b/apps/desktop/stores/chocolatey/bitwarden.nuspec new file mode 100644 index 0000000000..7ec0bf1fc3 --- /dev/null +++ b/apps/desktop/stores/chocolatey/bitwarden.nuspec @@ -0,0 +1,37 @@ + + + + + bitwarden + 0.0.0 + https://github.com/bitwarden/desktop/tree/master/stores/chocolatey + kspearrin + Bitwarden + Bitwarden Inc. + https://bitwarden.com/ + https://cdn.rawgit.com/bitwarden/desktop/51dd1341/resources/icon.png + Copyright © 2015-2022 Bitwarden Inc. + https://github.com/bitwarden/desktop/ + https://bitwarden.com/help/ + https://github.com/bitwarden/desktop/issues + https://github.com/bitwarden/desktop/releases + https://github.com/bitwarden/desktop/blob/master/LICENSE.txt + false + bitwarden password manager + A secure and free password manager for all of your devices. + + Bitwarden is the easiest and safest way to store all of your logins and passwords while conveniently keeping them synced between all of your devices. + + Password theft is a serious problem. The websites and apps that you use are under attack every day. Security breaches occur and your passwords are stolen. When you reuse the same passwords across apps and websites hackers can easily access your email, bank, and other important accounts. + + Security experts recommend that you use a different, randomly generated password for every account that you create. But how do you manage all those passwords? Bitwarden makes it easy for you to create, store, and access your passwords. + + Bitwarden stores all of your logins in an encrypted vault that syncs across all of your devices. Since it's fully encrypted before it ever leaves your device, only you have access to your data. Not even the team at Bitwarden can read your data, even if we wanted to. Your data is sealed with AES-256 bit encryption, salted hashing, and PBKDF2 SHA-256. + + Bitwarden is 100% open source software. The source code for Bitwarden is hosted on GitHub and everyone is free to review, audit, and contribute to the Bitwarden codebase. + + + + + + diff --git a/apps/desktop/stores/chocolatey/tools/chocolateyinstall.ps1 b/apps/desktop/stores/chocolatey/tools/chocolateyinstall.ps1 new file mode 100644 index 0000000000..30a41ce98e --- /dev/null +++ b/apps/desktop/stores/chocolatey/tools/chocolateyinstall.ps1 @@ -0,0 +1,17 @@ +$ErrorActionPreference = 'Stop'; + +$url = 'https://github.com/bitwarden/desktop/releases/download/v__version__/Bitwarden-Installer-__version__.exe' +$checksum = '__checksum__' + +$packageArgs = @{ + packageName = 'bitwarden' + fileType = 'EXE' + softwareName = 'Bitwarden' + url = $url + checksum = $checksum + checksumType = 'sha256' + silentArgs = '/S' + validExitCodes= @(0) +} + +Install-ChocolateyPackage @packageArgs diff --git a/apps/desktop/stores/microsoft/microsoft01.png b/apps/desktop/stores/microsoft/microsoft01.png new file mode 100644 index 0000000000..a60fd1ab56 Binary files /dev/null and b/apps/desktop/stores/microsoft/microsoft01.png differ diff --git a/apps/desktop/stores/microsoft/microsoft02.png b/apps/desktop/stores/microsoft/microsoft02.png new file mode 100644 index 0000000000..ca1050319f Binary files /dev/null and b/apps/desktop/stores/microsoft/microsoft02.png differ diff --git a/apps/desktop/stores/microsoft/microsoft03.png b/apps/desktop/stores/microsoft/microsoft03.png new file mode 100644 index 0000000000..73098f2bf4 Binary files /dev/null and b/apps/desktop/stores/microsoft/microsoft03.png differ diff --git a/apps/desktop/stores/microsoft/microsoft04.png b/apps/desktop/stores/microsoft/microsoft04.png new file mode 100644 index 0000000000..74cf303ae7 Binary files /dev/null and b/apps/desktop/stores/microsoft/microsoft04.png differ diff --git a/apps/desktop/stores/microsoft/microsoft05.png b/apps/desktop/stores/microsoft/microsoft05.png new file mode 100644 index 0000000000..49ecb191ab Binary files /dev/null and b/apps/desktop/stores/microsoft/microsoft05.png differ diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json new file mode 100644 index 0000000000..d3a11d8d21 --- /dev/null +++ b/apps/desktop/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "noImplicitAny": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "module": "es6", + "target": "ES2016", + "sourceMap": true, + "types": [], + "baseUrl": ".", + "paths": { + "tldjs": ["jslib/common/src/misc/tldjs.noop"], + "jslib-common/*": ["jslib/common/src/*"], + "jslib-angular/*": ["jslib/angular/src/*"], + "jslib-electron/*": ["jslib/electron/src/*"] + } + }, + "angularCompilerOptions": { + "preserveWhitespaces": true + }, + "include": ["src"] +} diff --git a/apps/desktop/tsconfig.renderer.json b/apps/desktop/tsconfig.renderer.json new file mode 100644 index 0000000000..484b005350 --- /dev/null +++ b/apps/desktop/tsconfig.renderer.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["src/entry.ts", "src/main.ts", "src/main", "src/proxy", "jslib/**/*.main.ts"] +} diff --git a/apps/desktop/webpack.main.js b/apps/desktop/webpack.main.js new file mode 100644 index 0000000000..85a95ad9eb --- /dev/null +++ b/apps/desktop/webpack.main.js @@ -0,0 +1,82 @@ +const path = require("path"); +const { merge } = require("webpack-merge"); +const CopyWebpackPlugin = require("copy-webpack-plugin"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin"); + +const NODE_ENV = process.env.NODE_ENV == null ? "development" : process.env.NODE_ENV; + +const common = { + module: { + rules: [ + { + test: /\.tsx?$/, + use: "ts-loader", + exclude: /node_modules\/(?!(@bitwarden)\/).*/, + }, + ], + }, + plugins: [], + resolve: { + extensions: [".tsx", ".ts", ".js"], + plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })], + }, +}; + +const prod = { + output: { + filename: "[name].js", + path: path.resolve(__dirname, "build"), + }, +}; + +const dev = { + output: { + filename: "[name].js", + path: path.resolve(__dirname, "build"), + devtoolModuleFilenameTemplate: "[absolute-resource-path]", + }, + devtool: "cheap-source-map", +}; + +const main = { + mode: NODE_ENV, + target: "electron-main", + node: { + __dirname: false, + __filename: false, + }, + entry: { + main: "./src/entry.ts", + }, + optimization: { + minimize: false, + }, + module: { + rules: [ + { + test: /\.node$/, + loader: "node-loader", + }, + ], + }, + plugins: [ + new CleanWebpackPlugin(), + new CopyWebpackPlugin({ + patterns: [ + "./src/package.json", + { from: "./src/images", to: "images" }, + { from: "./src/locales", to: "locales" }, + ], + }), + ], + externals: { + "electron-reload": "commonjs2 electron-reload", + "@nodert-win10-rs4/windows.security.credentials.ui": + "commonjs2 @nodert-win10-rs4/windows.security.credentials.ui", + forcefocus: "commonjs2 forcefocus", + keytar: "commonjs2 keytar", + }, +}; + +module.exports = merge(common, NODE_ENV === "development" ? dev : prod, main); diff --git a/apps/desktop/webpack.renderer.js b/apps/desktop/webpack.renderer.js new file mode 100644 index 0000000000..b3275d5934 --- /dev/null +++ b/apps/desktop/webpack.renderer.js @@ -0,0 +1,139 @@ +const path = require("path"); +const webpack = require("webpack"); +const { merge } = require("webpack-merge"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const { AngularWebpackPlugin } = require("@ngtools/webpack"); +const TerserPlugin = require("terser-webpack-plugin"); + +const NODE_ENV = process.env.NODE_ENV == null ? "development" : process.env.NODE_ENV; + +const common = { + module: { + rules: [ + { + test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, + loader: "@ngtools/webpack", + }, + { + test: /\.(jpe?g|png|gif|svg)$/i, + exclude: /.*(bwi-font)\.svg/, + generator: { + filename: "images/[name][ext]", + }, + type: "asset/resource", + }, + ], + }, + plugins: [], + resolve: { + extensions: [".tsx", ".ts", ".js"], + alias: { + jslib: path.join(__dirname, "jslib/src"), + }, + symlinks: false, + modules: [path.resolve("node_modules")], + }, + output: { + filename: "[name].js", + path: path.resolve(__dirname, "build"), + }, +}; + +const renderer = { + mode: NODE_ENV, + devtool: "source-map", + target: "electron-renderer", + node: { + __dirname: false, + }, + entry: { + "app/main": "./src/app/main.ts", + }, + optimization: { + minimizer: [ + new TerserPlugin({ + terserOptions: { + // Replicate Angular CLI behaviour + compress: { + global_defs: { + ngDevMode: false, + ngI18nClosureMode: false, + }, + }, + }, + }), + ], + splitChunks: { + cacheGroups: { + commons: { + test: /[\\/]node_modules[\\/]/, + name: "app/vendor", + chunks: (chunk) => { + return chunk.name === "app/main"; + }, + }, + }, + }, + }, + module: { + rules: [ + { + test: /\.(html)$/, + loader: "html-loader", + }, + { + test: /.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, + exclude: /loading.svg/, + generator: { + filename: "fonts/[name][ext]", + }, + type: "asset/resource", + }, + { + test: /\.scss$/, + use: [ + { + loader: MiniCssExtractPlugin.loader, + options: { + publicPath: "../", + }, + }, + "css-loader", + "sass-loader", + ], + }, + // Hide System.import warnings. ref: https://github.com/angular/angular/issues/21560 + { + test: /[\/\\]@angular[\/\\].+\.js$/, + parser: { system: true }, + }, + ], + }, + plugins: [ + new AngularWebpackPlugin({ + tsConfigPath: "tsconfig.renderer.json", + entryModule: "src/app/app.module#AppModule", + sourceMap: true, + }), + // ref: https://github.com/angular/angular/issues/20357 + new webpack.ContextReplacementPlugin( + /\@angular(\\|\/)core(\\|\/)fesm5/, + path.resolve(__dirname, "./src") + ), + new HtmlWebpackPlugin({ + template: "./src/index.html", + filename: "index.html", + chunks: ["app/vendor", "app/main"], + }), + new webpack.SourceMapDevToolPlugin({ + include: ["app/main.js"], + }), + new MiniCssExtractPlugin({ + filename: "[name].[contenthash].css", + chunkFilename: "[id].[contenthash].css", + }), + ], +}; + +module.exports = merge(common, renderer);